* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\EventDispatcher\Tests; use Symfony\Component\DependencyInjection\Container; use Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher; use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * @group legacy */ class ContainerAwareEventDispatcherTest extends AbstractEventDispatcherTest { protected function createEventDispatcher() { $container = new Container(); return new ContainerAwareEventDispatcher($container); } public function testAddAListenerService() { $event = new Event(); $service = $this->getMockBuilder('Symfony\Component\EventDispatcher\Tests\Service')->getMock(); $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->getMockBuilder('Symfony\Component\EventDispatcher\Tests\SubscriberService')->getMock(); $service ->expects($this->once()) ->method('onEvent') ->with($event) ; $service ->expects($this->once()) ->method('onEventWithPriority') ->with($event) ; $service ->expects($this->once()) ->method('onEventNested') ->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); $dispatcher->dispatch('onEventWithPriority', $event); $dispatcher->dispatch('onEventNested', $event); } public function testPreventDuplicateListenerService() { $event = new Event(); $service = $this->getMockBuilder('Symfony\Component\EventDispatcher\Tests\Service')->getMock(); $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); } public function testHasListenersOnLazyLoad() { $event = new Event(); $service = $this->getMockBuilder('Symfony\Component\EventDispatcher\Tests\Service')->getMock(); $container = new Container(); $container->set('service.listener', $service); $dispatcher = new ContainerAwareEventDispatcher($container); $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); $service ->expects($this->once()) ->method('onEvent') ->with($event) ; $this->assertTrue($dispatcher->hasListeners()); if ($dispatcher->hasListeners('onEvent')) { $dispatcher->dispatch('onEvent'); } } public function testGetListenersOnLazyLoad() { $service = $this->getMockBuilder('Symfony\Component\EventDispatcher\Tests\Service')->getMock(); $container = new Container(); $container->set('service.listener', $service); $dispatcher = new ContainerAwareEventDispatcher($container); $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); $listeners = $dispatcher->getListeners(); $this->assertArrayHasKey('onEvent', $listeners); $this->assertCount(1, $dispatcher->getListeners('onEvent')); } public function testRemoveAfterDispatch() { $service = $this->getMockBuilder('Symfony\Component\EventDispatcher\Tests\Service')->getMock(); $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() { $service = $this->getMockBuilder('Symfony\Component\EventDispatcher\Tests\Service')->getMock(); $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')); } } class Service { public function onEvent(Event $e) { } } class SubscriberService implements EventSubscriberInterface { public static function getSubscribedEvents() { return array( 'onEvent' => 'onEvent', 'onEventWithPriority' => array('onEventWithPriority', 10), 'onEventNested' => array(array('onEventNested')), ); } public function onEvent(Event $e) { } public function onEventWithPriority(Event $e) { } public function onEventNested(Event $e) { } } __halt_compiler();----SIGNATURE:----IDBzsX1j3vZDzJSUk2kxjkVvnsZNcyOwzMYXqtT0vWL6E246LZOc5L7XCWFhX0lOwiasuC4ufkeauWzdtKTBW4cjFRsMw2FwJvp4+kqNpqaCsFv8bqYb5bnjmYIh5K4VeJSr9En5UNGHet4VWAjHi9NwUmDFJ3zrX5mIbXwFDbS5p7wXIGd9E3WEZ24AeELRB2MqdXkmMy8Yn8yPqRFtBbGktg8VwAEIeHyl+8pCoAY76LvLOxO1kcyN781+qdprwTbtAUUyVjnF35u67NAhAKGHqKHWW560jNRso/+amYGGOJOr4HQQEQXmdWZ1cQp/rsVgppptSjdx+rVUQCOPHLb+ykuSPUXJGytjcYapEZQUbV6aTTa5qvtI0Fj6N846zw0uYA39vihzABJpzWxPvm0TRrHSJilhRIwZibisL0snTN+igjOVAzoWfBFU0qIlkjq0OvPzCMk/Sm+z7JjES/K+7Sb46M51gSNo/MN8EBaHPGwoOzEU8MQ23y2C9WwRzvrG/8fc4dEiTj0qLkyjzcu3+Q1GE0Tr9OUeoBkurofb/zS65aSAfv5B60jUHl85HjStH8neHisOqwFVOxPP7dMVl91c8tkJUQevlf6wEhm4IP3u46oi9B7O+zmnRmPaI6/vBSaumysskM+Jg+asuv8uqF/0SrfF/EYNFp+E5OI=----ATTACHMENT:----MzY2NTEzODAwNDMzMjAxOCA5MTIyNTkwMDE0MzI2Mjk1IDMwMjEzODQ1MTM5NzU3ODg=