getMockBuilder(ContainerInterface::class)->getMock(); $container->expects($this->never())->method($this->anything()); $firstListener = new CallableClass(); $secondListener = function () {}; $thirdListener = array(new TestEventListener(), 'preFoo'); $listeners = array( 'test_event' => array( 0 => array( array('callable' => $firstListener), array('callable' => $secondListener), array('callable' => $thirdListener), ), ), ); $dispatcher = new ContainerAwareEventDispatcher($container, $listeners); $actualListeners = $dispatcher->getListeners(); $expectedListeners = array( 'test_event' => array( $firstListener, $secondListener, $thirdListener, ), ); $this->assertSame($expectedListeners, $actualListeners); } public function testDispatchWithCallables() { // When passing in callables exclusively as listeners into the event // dispatcher constructor, the event dispatcher must not attempt to // resolve any services. $container = $this->getMockBuilder(ContainerInterface::class)->getMock(); $container->expects($this->never())->method($this->anything()); $firstListener = new CallableClass(); $secondListener = function () {}; $thirdListener = array(new TestEventListener(), 'preFoo'); $listeners = array( 'test_event' => array( 0 => array( array('callable' => $firstListener), array('callable' => $secondListener), array('callable' => $thirdListener), ), ), ); $dispatcher = new ContainerAwareEventDispatcher($container, $listeners); $dispatcher->dispatch('test_event'); $this->assertTrue($thirdListener[0]->preFooInvoked); } public function testGetListenersWithServices() { $container = new ContainerBuilder(); $container->register('listener_service', 'Symfony\Component\EventDispatcher\Tests\TestEventListener'); $listeners = array( 'test_event' => array( 0 => array( array('service' => array('listener_service', 'preFoo')), ), ), ); $dispatcher = new ContainerAwareEventDispatcher($container, $listeners); $actualListeners = $dispatcher->getListeners(); $listenerService = $container->get('listener_service'); $expectedListeners = array( 'test_event' => array( array($listenerService, 'preFoo'), ), ); $this->assertSame($expectedListeners, $actualListeners); } public function testDispatchWithServices() { $container = new ContainerBuilder(); $container->register('listener_service', 'Symfony\Component\EventDispatcher\Tests\TestEventListener'); $listeners = array( 'test_event' => array( 0 => array( array('service' => array('listener_service', 'preFoo')), ), ), ); $dispatcher = new ContainerAwareEventDispatcher($container, $listeners); $dispatcher->dispatch('test_event'); $listenerService = $container->get('listener_service'); $this->assertTrue($listenerService->preFooInvoked); } public function testRemoveService() { $container = new ContainerBuilder(); $container->register('listener_service', 'Symfony\Component\EventDispatcher\Tests\TestEventListener'); $container->register('other_listener_service', 'Symfony\Component\EventDispatcher\Tests\TestEventListener'); $listeners = array( 'test_event' => array( 0 => array( array('service' => array('listener_service', 'preFoo')), array('service' => array('other_listener_service', 'preFoo')), ), ), ); $dispatcher = new ContainerAwareEventDispatcher($container, $listeners); $listenerService = $container->get('listener_service'); $dispatcher->removeListener('test_event', array($listenerService, 'preFoo')); // Ensure that other service was not initialized during removal of the // listener service. $this->assertFalse($container->initialized('other_listener_service')); $dispatcher->dispatch('test_event'); $this->assertFalse($listenerService->preFooInvoked); $otherService = $container->get('other_listener_service'); $this->assertTrue($otherService->preFooInvoked); } public function testGetListenerPriorityWithServices() { $container = new ContainerBuilder(); $container->register('listener_service', TestEventListener::class); $listeners = array( 'test_event' => array( 5 => array( array('service' => array('listener_service', 'preFoo')), ), ), ); $dispatcher = new ContainerAwareEventDispatcher($container, $listeners); $listenerService = $container->get('listener_service'); $actualPriority = $dispatcher->getListenerPriority('test_event', [$listenerService, 'preFoo']); $this->assertSame(5, $actualPriority); } /** * @expectedDeprecation The Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher class is deprecated since Symfony 3.3 and will be removed in 4.0. Use EventDispatcher with closure factories instead. * @group legacy */ public function testAddAListenerService() { parent::testAddAListenerService(); } /** * @expectedDeprecation The Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher class is deprecated since Symfony 3.3 and will be removed in 4.0. Use EventDispatcher with closure factories instead. * @group legacy */ public function testPreventDuplicateListenerService() { parent::testPreventDuplicateListenerService(); } /** * @expectedDeprecation The Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher class is deprecated since Symfony 3.3 and will be removed in 4.0. Use EventDispatcher with closure factories instead. * @group legacy */ public function testAddASubscriberService() { parent::testAddASubscriberService(); } /** * @expectedDeprecation The Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher class is deprecated since Symfony 3.3 and will be removed in 4.0. Use EventDispatcher with closure factories instead. * @group legacy */ public function testHasListenersOnLazyLoad() { parent::testHasListenersOnLazyLoad(); } /** * @expectedDeprecation The Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher class is deprecated since Symfony 3.3 and will be removed in 4.0. Use EventDispatcher with closure factories instead. * @group legacy */ public function testGetListenersOnLazyLoad() { parent::testGetListenersOnLazyLoad(); } /** * @expectedDeprecation The Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher class is deprecated since Symfony 3.3 and will be removed in 4.0. Use EventDispatcher with closure factories instead. * @group legacy */ public function testRemoveAfterDispatch() { parent::testRemoveAfterDispatch(); } /** * @expectedDeprecation The Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher class is deprecated since Symfony 3.3 and will be removed in 4.0. Use EventDispatcher with closure factories instead. * @group legacy */ public function testRemoveBeforeDispatch() { parent::testRemoveBeforeDispatch(); } }