Expanded class hierarchy of ContainerAwareEventDispatcherTest
class ContainerAwareEventDispatcherTest extends \PHPUnit_Framework_TestCase {
protected function setUp() {
if (!class_exists('Symfony\\Component\\DependencyInjection\\Container')) {
$this
->markTestSkipped('The "DependencyInjection" component is not available');
}
}
public function testAddAListenerService() {
$event = new Event();
$service = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service');
$service
->expects($this
->once())
->method('onEvent')
->with($event);
$container = new Container();
$container
->set('service.listener', $service);
$dispatcher = new ContainerAwareEventDispatcher($container);
$dispatcher
->addListenerService('onEvent', array(
'service.listener',
'onEvent',
));
$dispatcher
->dispatch('onEvent', $event);
}
public function testAddASubscriberService() {
$event = new Event();
$service = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\SubscriberService');
$service
->expects($this
->once())
->method('onEvent')
->with($event);
$container = new Container();
$container
->set('service.subscriber', $service);
$dispatcher = new ContainerAwareEventDispatcher($container);
$dispatcher
->addSubscriberService('service.subscriber', 'Symfony\\Component\\EventDispatcher\\Tests\\SubscriberService');
$dispatcher
->dispatch('onEvent', $event);
}
public function testPreventDuplicateListenerService() {
$event = new Event();
$service = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service');
$service
->expects($this
->once())
->method('onEvent')
->with($event);
$container = new Container();
$container
->set('service.listener', $service);
$dispatcher = new ContainerAwareEventDispatcher($container);
$dispatcher
->addListenerService('onEvent', array(
'service.listener',
'onEvent',
), 5);
$dispatcher
->addListenerService('onEvent', array(
'service.listener',
'onEvent',
), 10);
$dispatcher
->dispatch('onEvent', $event);
}
/**
* @expectedException \InvalidArgumentException
*/
public function testTriggerAListenerServiceOutOfScope() {
$service = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service');
$scope = new Scope('scope');
$container = new Container();
$container
->addScope($scope);
$container
->enterScope('scope');
$container
->set('service.listener', $service, 'scope');
$dispatcher = new ContainerAwareEventDispatcher($container);
$dispatcher
->addListenerService('onEvent', array(
'service.listener',
'onEvent',
));
$container
->leaveScope('scope');
$dispatcher
->dispatch('onEvent');
}
public function testReEnteringAScope() {
$event = new Event();
$service1 = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service');
$service1
->expects($this
->exactly(2))
->method('onEvent')
->with($event);
$scope = new Scope('scope');
$container = new Container();
$container
->addScope($scope);
$container
->enterScope('scope');
$container
->set('service.listener', $service1, 'scope');
$dispatcher = new ContainerAwareEventDispatcher($container);
$dispatcher
->addListenerService('onEvent', array(
'service.listener',
'onEvent',
));
$dispatcher
->dispatch('onEvent', $event);
$service2 = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service');
$service2
->expects($this
->once())
->method('onEvent')
->with($event);
$container
->enterScope('scope');
$container
->set('service.listener', $service2, 'scope');
$dispatcher
->dispatch('onEvent', $event);
$container
->leaveScope('scope');
$dispatcher
->dispatch('onEvent');
}
public function testHasListenersOnLazyLoad() {
$event = new Event();
$service = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service');
$container = new Container();
$container
->set('service.listener', $service);
$dispatcher = new ContainerAwareEventDispatcher($container);
$dispatcher
->addListenerService('onEvent', array(
'service.listener',
'onEvent',
));
$event
->setDispatcher($dispatcher);
$event
->setName('onEvent');
$service
->expects($this
->once())
->method('onEvent')
->with($event);
$this
->assertTrue($dispatcher
->hasListeners());
if ($dispatcher
->hasListeners('onEvent')) {
$dispatcher
->dispatch('onEvent');
}
}
public function testGetListenersOnLazyLoad() {
$event = new Event();
$service = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service');
$container = new Container();
$container
->set('service.listener', $service);
$dispatcher = new ContainerAwareEventDispatcher($container);
$dispatcher
->addListenerService('onEvent', array(
'service.listener',
'onEvent',
));
$listeners = $dispatcher
->getListeners();
$this
->assertTrue(isset($listeners['onEvent']));
$this
->assertCount(1, $dispatcher
->getListeners('onEvent'));
}
public function testRemoveAfterDispatch() {
$event = new Event();
$service = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service');
$container = new Container();
$container
->set('service.listener', $service);
$dispatcher = new ContainerAwareEventDispatcher($container);
$dispatcher
->addListenerService('onEvent', array(
'service.listener',
'onEvent',
));
$dispatcher
->dispatch('onEvent', new Event());
$dispatcher
->removeListener('onEvent', array(
$container
->get('service.listener'),
'onEvent',
));
$this
->assertFalse($dispatcher
->hasListeners('onEvent'));
}
public function testRemoveBeforeDispatch() {
$event = new Event();
$service = $this
->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service');
$container = new Container();
$container
->set('service.listener', $service);
$dispatcher = new ContainerAwareEventDispatcher($container);
$dispatcher
->addListenerService('onEvent', array(
'service.listener',
'onEvent',
));
$dispatcher
->removeListener('onEvent', array(
$container
->get('service.listener'),
'onEvent',
));
$this
->assertFalse($dispatcher
->hasListeners('onEvent'));
}
}
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ContainerAwareEventDispatcherTest:: |
protected | function | ||
ContainerAwareEventDispatcherTest:: |
public | function | ||
ContainerAwareEventDispatcherTest:: |
public | function | ||
ContainerAwareEventDispatcherTest:: |
public | function | ||
ContainerAwareEventDispatcherTest:: |
public | function | ||
ContainerAwareEventDispatcherTest:: |
public | function | ||
ContainerAwareEventDispatcherTest:: |
public | function | ||
ContainerAwareEventDispatcherTest:: |
public | function | ||
ContainerAwareEventDispatcherTest:: |
public | function | ||
ContainerAwareEventDispatcherTest:: |
public | function | @expectedException \InvalidArgumentException |