1
0
mirror of https://github.com/guzzle/guzzle.git synced 2025-02-25 02:22:57 +01:00

Updating MockPlugin to throw an exception if queue is empty

This commit is contained in:
yitznewton 2014-02-24 22:59:50 -05:00
parent 8d39ffa70a
commit 64aee32bb5
4 changed files with 20 additions and 11 deletions

View File

@ -226,17 +226,20 @@ class MockPlugin extends AbstractHasDispatcher implements EventSubscriberInterfa
* Called when a request is about to be sent * Called when a request is about to be sent
* *
* @param Event $event * @param Event $event
* @throws \OutOfBoundsException When queue is empty
*/ */
public function onRequestBeforeSend(Event $event) public function onRequestBeforeSend(Event $event)
{ {
if ($this->queue) { if (!$this->queue) {
$request = $event['request']; throw new \OutOfBoundsException('Mock queue is empty');
$this->received[] = $request;
// Detach the filter from the client so it's a one-time use
if ($this->temporary && count($this->queue) == 1 && $request->getClient()) {
$request->getClient()->getEventDispatcher()->removeSubscriber($this);
}
$this->dequeue($request);
} }
$request = $event['request'];
$this->received[] = $request;
// Detach the filter from the client so it's a one-time use
if ($this->temporary && count($this->queue) == 1 && $request->getClient()) {
$request->getClient()->getEventDispatcher()->removeSubscriber($this);
}
$this->dequeue($request);
} }
} }

View File

@ -421,7 +421,10 @@ class HttpRequestFactoryTest extends \Guzzle\Tests\GuzzleTestCase
public function testCanAddPlugins() public function testCanAddPlugins()
{ {
$mock = new MockPlugin(array(new Response(200))); $mock = new MockPlugin(array(
new Response(200),
new Response(200)
));
$client = new Client(); $client = new Client();
$client->addSubscriber($mock); $client->addSubscriber($mock);
$request = $client->get('/', array(), array( $request = $client->get('/', array(), array(

View File

@ -176,6 +176,7 @@ class DefaultRevalidationTest extends \Guzzle\Tests\GuzzleTestCase
'Last-Modified' => $lm, 'Last-Modified' => $lm,
'Content-Length' => 2 'Content-Length' => 2
), 'hi'), ), 'hi'),
new CurlException('Bleh'),
new CurlException('Bleh') new CurlException('Bleh')
)); ));
$client->addSubscriber(new CachePlugin()); $client->addSubscriber(new CachePlugin());
@ -184,7 +185,7 @@ class DefaultRevalidationTest extends \Guzzle\Tests\GuzzleTestCase
$response = $client->get()->send(); $response = $client->get()->send();
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('hi', $response->getBody(true)); $this->assertEquals('hi', $response->getBody(true));
$this->assertEquals(2, count($mock->getReceivedRequests())); $this->assertEquals(3, count($mock->getReceivedRequests()));
$this->assertEquals(0, count($mock->getQueue())); $this->assertEquals(0, count($mock->getQueue()));
} }
@ -198,6 +199,7 @@ class DefaultRevalidationTest extends \Guzzle\Tests\GuzzleTestCase
'Last-Modified' => $lm, 'Last-Modified' => $lm,
'Content-Length' => 2 'Content-Length' => 2
), 'hi'), ), 'hi'),
new CurlException('Oh no!'),
new CurlException('Oh no!') new CurlException('Oh no!')
)); ));
$cache = new CachePlugin(); $cache = new CachePlugin();

View File

@ -119,8 +119,9 @@ class MockPluginTest extends \Guzzle\Tests\GuzzleTestCase
/** /**
* @depends testAddsResponseFilesToQueue * @depends testAddsResponseFilesToQueue
* @expectedException \OutOfBoundsException
*/ */
public function testUpdateIgnoresWhenEmpty() public function testUpdateThrowsExceptionWhenEmpty()
{ {
$p = new MockPlugin(); $p = new MockPlugin();
$p->onRequestBeforeSend(new Event()); $p->onRequestBeforeSend(new Event());