|
| 1 | +<?php |
| 2 | + |
| 3 | +namespace spec\Http\Client\Util; |
| 4 | + |
| 5 | +use Http\Client\HttpPsrClient; |
| 6 | +use Http\Client\Util\BatchRequest; |
| 7 | +use PhpSpec\ObjectBehavior; |
| 8 | +use Psr\Http\Message\RequestInterface; |
| 9 | +use Psr\Http\Message\ResponseInterface; |
| 10 | + |
| 11 | +class BatchRequestSpec extends ObjectBehavior |
| 12 | +{ |
| 13 | + function let(HttpPsrClient $client) |
| 14 | + { |
| 15 | + $this->beAnInstanceOf('spec\Http\Client\Util\BatchRequestStub', [$client]); |
| 16 | + } |
| 17 | + |
| 18 | + function it_send_multiple_request_using_send_request(HttpPsrClient $client, RequestInterface $request1, RequestInterface $request2, ResponseInterface $response1, ResponseInterface $response2) |
| 19 | + { |
| 20 | + $client->sendRequest($request1, [])->willReturn($response1); |
| 21 | + $client->sendRequest($request2, [])->willReturn($response2); |
| 22 | + |
| 23 | + $this->sendRequests([$request1, $request2], [])->shouldReturnAnInstanceOf('\Http\Client\BatchResult'); |
| 24 | + } |
| 25 | + |
| 26 | + function it_throw_batch_exception_if_one_or_more_request_failed(HttpPsrClient $client, RequestInterface $request1, RequestInterface $request2, ResponseInterface $response) |
| 27 | + { |
| 28 | + $client->sendRequest($request1, [])->willReturn($response); |
| 29 | + $client->sendRequest($request2, [])->willThrow('\Http\Client\Exception\HttpException'); |
| 30 | + |
| 31 | + $this->shouldThrow('\Http\Client\Exception\BatchException')->duringSendRequests([$request1, $request2], []); |
| 32 | + } |
| 33 | +} |
| 34 | + |
| 35 | +class BatchRequestStub implements HttpPsrClient |
| 36 | +{ |
| 37 | + use BatchRequest; |
| 38 | + |
| 39 | + protected $client; |
| 40 | + |
| 41 | + public function __construct(HttpPsrClient $client) |
| 42 | + { |
| 43 | + $this->client = $client; |
| 44 | + } |
| 45 | + |
| 46 | + /** |
| 47 | + * {@inheritdoc} |
| 48 | + */ |
| 49 | + public function sendRequest(RequestInterface $request, array $options = []) |
| 50 | + { |
| 51 | + return $this->client->sendRequest($request, $options); |
| 52 | + } |
| 53 | +} |
0 commit comments