Skip to content

Commit

Permalink
mark classes as final and methods and properties as private
Browse files Browse the repository at this point in the history
  • Loading branch information
dbu committed Dec 8, 2018
1 parent 14a2a39 commit a177902
Show file tree
Hide file tree
Showing 25 changed files with 451 additions and 406 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Expand Up @@ -5,6 +5,9 @@
### Changed
- Abstract method `HttpClientPool::chooseHttpClient()` has now an explicit return type (`Http\Client\Common\HttpClientPoolItem`)
- Interface method `Plugin::handleRequest(...)` has now an explicit return type (`Http\Promise\Promise`)
- Made all classes final as they are not intended to be extended.
Added interfaces for BatchClient, HttpClientPool, HttpClientRouter and HttpMethodsClient.
Those classes have been renamed with an `Impl` suffix.

### Removed
- Deprecated option `debug_plugins` has been removed from `PluginClient`
Expand Down
6 changes: 3 additions & 3 deletions spec/BatchClientSpec.php → spec/BatchClientImplSpec.php
Expand Up @@ -6,16 +6,16 @@
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use PhpSpec\ObjectBehavior;
use Http\Client\Common\BatchClient;
use Http\Client\Common\BatchClientImpl;
use Http\Client\Common\BatchResult;
use Http\Client\Exception\HttpException;
use Http\Client\Common\Exception\BatchException;

class BatchClientSpec extends ObjectBehavior
class BatchClientImplSpec extends ObjectBehavior
{
public function let(HttpClient $client)
{
$this->beAnInstanceOf(BatchClient::class, [$client]);
$this->beAnInstanceOf(BatchClientImpl::class, [$client]);
}

public function it_send_multiple_request_using_send_request(HttpClient $client, RequestInterface $request1, RequestInterface $request2, ResponseInterface $response1, ResponseInterface $response2)
Expand Down
@@ -1,6 +1,6 @@
<?php

namespace spec\Http\Client\Common;
namespace spec\Http\Client\Common\HttpClientPool;

use Http\Client\Exception;
use Http\Client\Exception\TransferException;
Expand All @@ -14,7 +14,7 @@
use Psr\Http\Message\ResponseInterface;
use Http\Client\Exception\RequestException;

class HttpClientPoolItemSpec extends ObjectBehavior
class HttpClientPoolItemImplSpec extends ObjectBehavior
{
public function let(HttpClient $httpClient)
{
Expand Down
5 changes: 3 additions & 2 deletions spec/HttpClientPool/LeastUsedClientPoolSpec.php
Expand Up @@ -2,7 +2,8 @@

namespace spec\Http\Client\Common\HttpClientPool;

use Http\Client\Common\HttpClientPoolItem;
use Http\Client\Common\HttpClientPool\HttpClientPoolItem;
use Http\Client\Common\HttpClientPool\HttpClientPoolItemImpl;
use Http\Client\HttpAsyncClient;
use Http\Client\HttpClient;
use Http\Promise\Promise;
Expand Down Expand Up @@ -65,7 +66,7 @@ public function it_throw_exception_if_no_more_enable_client(HttpClient $client,

public function it_reenable_client(HttpClient $client, RequestInterface $request)
{
$this->addHttpClient(new HttpClientPoolItem($client->getWrappedObject(), 0));
$this->addHttpClient(new HttpClientPoolItemImpl($client->getWrappedObject(), 0));
$client->sendRequest($request)->willThrow(HttpException::class);

$this->shouldThrow(HttpException::class)->duringSendRequest($request);
Expand Down
4 changes: 2 additions & 2 deletions spec/HttpClientPool/RandomClientPoolSpec.php
Expand Up @@ -2,7 +2,7 @@

namespace spec\Http\Client\Common\HttpClientPool;

use Http\Client\Common\HttpClientPoolItem;
use Http\Client\Common\HttpClientPool\HttpClientPoolItemImpl;
use Http\Client\HttpAsyncClient;
use Http\Client\HttpClient;
use Http\Promise\Promise;
Expand Down Expand Up @@ -65,7 +65,7 @@ public function it_throw_exception_if_no_more_enable_client(HttpClient $client,

public function it_reenable_client(HttpClient $client, RequestInterface $request)
{
$this->addHttpClient(new HttpClientPoolItem($client->getWrappedObject(), 0));
$this->addHttpClient(new HttpClientPoolItemImpl($client->getWrappedObject(), 0));
$client->sendRequest($request)->willThrow(HttpException::class);

$this->shouldThrow(HttpException::class)->duringSendRequest($request);
Expand Down
4 changes: 2 additions & 2 deletions spec/HttpClientPool/RoundRobinClientPoolSpec.php
Expand Up @@ -2,7 +2,7 @@

namespace spec\Http\Client\Common\HttpClientPool;

use Http\Client\Common\HttpClientPoolItem;
use Http\Client\Common\HttpClientPool\HttpClientPoolItemImpl;
use Http\Client\HttpAsyncClient;
use Http\Client\HttpClient;
use Http\Promise\Promise;
Expand Down Expand Up @@ -65,7 +65,7 @@ public function it_throw_exception_if_no_more_enable_client(HttpClient $client,

public function it_reenable_client(HttpClient $client, RequestInterface $request)
{
$this->addHttpClient(new HttpClientPoolItem($client->getWrappedObject(), 0));
$this->addHttpClient(new HttpClientPoolItemImpl($client->getWrappedObject(), 0));
$client->sendRequest($request)->willThrow(HttpException::class);

$this->shouldThrow(HttpException::class)->duringSendRequest($request);
Expand Down
Expand Up @@ -2,6 +2,7 @@

namespace spec\Http\Client\Common;

use Http\Client\Common\HttpClientRouterImpl;
use Http\Message\RequestMatcher;
use Http\Client\HttpAsyncClient;
use Http\Client\HttpClient;
Expand All @@ -12,11 +13,16 @@
use Http\Client\Common\HttpClientRouter;
use Http\Client\Exception\RequestException;

class HttpClientRouterSpec extends ObjectBehavior
class HttpClientRouterImplSpec extends ObjectBehavior
{
public function it_is_initializable()
{
$this->shouldHaveType(HttpClientRouter::class);
$this->shouldHaveType(HttpClientRouterImpl::class);
}

public function it_is_an_http_client_router()
{
$this->shouldImplement(HttpClientRouter::class);
}

public function it_is_an_http_client()
Expand Down
89 changes: 89 additions & 0 deletions spec/HttpMethodsClientImplSpec.php
@@ -0,0 +1,89 @@
<?php

namespace spec\Http\Client\Common;

use Http\Client\Common\HttpMethodsClientImpl;
use Http\Client\HttpClient;
use Http\Message\RequestFactory;
use PhpSpec\ObjectBehavior;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;

class HttpMethodsClientImplSpec extends ObjectBehavior
{
private static $requestData = [
'uri' => '/uri',
'headers' => [
'Content-Type' => 'text/plain',
],
'body' => 'body',
];

public function let(HttpClient $client, RequestFactory $requestFactory)
{
$this->beAnInstanceOf(
HttpMethodsClientImpl::class, [
$client,
$requestFactory,
]
);
}

public function it_sends_a_get_request(HttpClient $client, RequestFactory $requestFactory, RequestInterface $request, ResponseInterface $response)
{
$this->assert($client, $requestFactory, $request, $response, 'get');
}

public function it_sends_a_head_request(HttpClient $client, RequestFactory $requestFactory, RequestInterface $request, ResponseInterface $response)
{
$this->assert($client, $requestFactory, $request, $response, 'head');
}

public function it_sends_a_trace_request(HttpClient $client, RequestFactory $requestFactory, RequestInterface $request, ResponseInterface $response)
{
$this->assert($client, $requestFactory, $request, $response, 'trace');
}

public function it_sends_a_post_request(HttpClient $client, RequestFactory $requestFactory, RequestInterface $request, ResponseInterface $response)
{
$this->assert($client, $requestFactory, $request, $response, 'post', self::$requestData['body']);
}

public function it_sends_a_put_request(HttpClient $client, RequestFactory $requestFactory, RequestInterface $request, ResponseInterface $response)
{
$this->assert($client, $requestFactory, $request, $response, 'put', self::$requestData['body']);
}

public function it_sends_a_patch_request(HttpClient $client, RequestFactory $requestFactory, RequestInterface $request, ResponseInterface $response)
{
$this->assert($client, $requestFactory, $request, $response, 'patch', self::$requestData['body']);
}

public function it_sends_a_delete_request(HttpClient $client, RequestFactory $requestFactory, RequestInterface $request, ResponseInterface $response)
{
$this->assert($client, $requestFactory, $request, $response, 'delete', self::$requestData['body']);
}

public function it_sends_an_options_request(HttpClient $client, RequestFactory $requestFactory, RequestInterface $request, ResponseInterface $response)
{
$this->assert($client, $requestFactory, $request, $response, 'options', self::$requestData['body']);
}

/**
* Run the actual test.
*
* As there is no data provider in phpspec, we keep separate methods to get new mocks for each test.
*/
private function assert(HttpClient $client, RequestFactory $requestFactory, RequestInterface $request, ResponseInterface $response, string $method, string $body = null)
{
$client->sendRequest($request)->shouldBeCalled()->willReturn($response);
$this->mockFactory($requestFactory, $request, strtoupper($method), $body);

$this->$method(self::$requestData['uri'], self::$requestData['headers'], self::$requestData['body'])->shouldReturnAnInstanceOf(ResponseInterface::class);
}

private function mockFactory(RequestFactory $requestFactory, RequestInterface $request, string $method, string $body = null)
{
$requestFactory->createRequest($method, self::$requestData['uri'], self::$requestData['headers'], $body)->willReturn($request);
}
}
136 changes: 0 additions & 136 deletions spec/HttpMethodsClientSpec.php

This file was deleted.

0 comments on commit a177902

Please sign in to comment.