Skip to content

Commit

Permalink
Add DequeuerInterface to BaseConsumer.
Browse files Browse the repository at this point in the history
  • Loading branch information
bburnichon committed Jan 20, 2015
1 parent f2124c4 commit 26fdd2d
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 3 deletions.
4 changes: 1 addition & 3 deletions RabbitMq/BaseConsumer.php
Expand Up @@ -2,9 +2,7 @@

namespace OldSound\RabbitMqBundle\RabbitMq;

use OldSound\RabbitMqBundle\RabbitMq\BaseAmqp;

abstract class BaseConsumer extends BaseAmqp
abstract class BaseConsumer extends BaseAmqp implements DequeuerInterface
{
protected $target;

Expand Down
8 changes: 8 additions & 0 deletions RabbitMq/DequeuerAwareInterface.php
@@ -0,0 +1,8 @@
<?php

namespace OldSound\RabbitMqBundle\RabbitMq;

interface DequeuerAwareInterface
{
public function setDequeuer(DequeuerInterface $dequeuer);
}
29 changes: 29 additions & 0 deletions RabbitMq/DequeuerInterface.php
@@ -0,0 +1,29 @@
<?php

namespace OldSound\RabbitMqBundle\RabbitMq;

interface DequeuerInterface
{
/**
* Stop dequeuing messages.
*
* @return void
*/
public function forceStopConsumer();

/**
* Set idle timeout
*
* @param $idleTimeout
*
* @return void
*/
public function setIdleTimeout($idleTimeout);

/**
* Get current idle timeout
*
* @return int
*/
public function getIdleTimeout();
}
46 changes: 46 additions & 0 deletions Tests/RabbitMq/BaseConsumerTest.php
@@ -0,0 +1,46 @@
<?php

namespace OldSound\RabbitMqBundle\Tests\RabbitMq;

use OldSound\RabbitMqBundle\RabbitMq\BaseConsumer;

class BaseConsumerTest extends \PHPUnit_Framework_TestCase
{
/** @var BaseConsumer */
protected $consumer;

protected function setUp()
{
$amqpConnection = $this->getMockBuilder('\PhpAmqpLib\Connection\AMQPConnection')
->disableOriginalConstructor()
->getMock();

$this->consumer = $this->getMockBuilder('\OldSound\RabbitMqBundle\RabbitMq\BaseConsumer')
->setConstructorArgs(array($amqpConnection))
->getMockForAbstractClass();
}

public function testItExtendsBaseAmqpInterface()
{
$this->assertInstanceOf('OldSound\RabbitMqBundle\RabbitMq\BaseAmqp', $this->consumer);
}

public function testItImplementsDequeuerInterface()
{
$this->assertInstanceOf('OldSound\RabbitMqBundle\RabbitMq\DequeuerInterface', $this->consumer);
}

public function testItsIdleTimeoutIsMutable()
{
$this->assertEquals(0, $this->consumer->getIdleTimeout());
$this->consumer->setIdleTimeout(42);
$this->assertEquals(42, $this->consumer->getIdleTimeout());
}

public function testForceStopConsumer()
{
$this->assertAttributeEquals(false, 'forceStop', $this->consumer);
$this->consumer->forceStopConsumer();
$this->assertAttributeEquals(true, 'forceStop', $this->consumer);
}
}

0 comments on commit 26fdd2d

Please sign in to comment.