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
*
* @param Event $event
* @throws \OutOfBoundsException When queue is empty
*/
public function onRequestBeforeSend(Event $event)
{
if ($this->queue) {
$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);
if (!$this->queue) {
throw new \OutOfBoundsException('Mock queue is empty');
}
$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()
{
$mock = new MockPlugin(array(new Response(200)));
$mock = new MockPlugin(array(
new Response(200),
new Response(200)
));
$client = new Client();
$client->addSubscriber($mock);
$request = $client->get('/', array(), array(

View File

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

View File

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