Ejemplo n.º 1
0
 /**
  * Issue #2 - Higher priority handles don't stop lower priority listeners from seeing event.
  *
  * @param MockListener $listener
  * @param Event        $event
  *
  * @throws \DomainException
  * @throws \InvalidArgumentException
  */
 public function it_should_only_call_listeners_for_event_until_one_of_them_handles_the_event(MockListener $listener, Event $event)
 {
     $event->hasBeenHandled()->willReturn(true)->shouldBeCalled();
     $listener->method2($event, 'test1', $this)->willReturn($event);
     $this->addListener('test1', [$listener, 'method2']);
     $this->addListener('test1', [$listener, 'method1'], 'last');
     $this->getListeners()->shouldHaveKey('test1');
     $expected = [0 => [[$listener, 'method2']], -1 => [[$listener, 'method1']]];
     $this->getListeners('test1')->shouldReturn($expected);
     $listener->method2($event, 'test1', $this)->shouldBeCalled();
     $listener->method1($event, 'test1', $this)->shouldNotBeCalled();
     $this->trigger('test1', $event);
 }
 /**
  * @param MockListener          $listener
  * @param Event                 $event
  * @param Container             $container
  * @param MockServiceSubscriber $sub
  *
  * @throws \DomainException
  * @throws \InvalidArgumentException
  * @throws \LengthException
  * @throws \LogicException
  */
 public function it_should_still_allow_service_subscriber_to_be_removed_after_event_has_been_triggered(MockListener $listener, Event $event, Container $container, MockServiceSubscriber $sub)
 {
     $events = ['test1' => [[['containerID1', 'method1']]]];
     $event->hasBeenHandled()->willReturn(false);
     $sub->getServiceSubscribedEvents()->willReturn($events);
     $this->addServiceSubscriber($sub);
     $this->getServiceListeners()->shouldHaveKey('test1');
     $container->offsetGet('containerID1')->willReturn($listener);
     $this->setServiceContainer($container);
     $listener->method1($event, 'test1', $this)->shouldBeCalled();
     $this->getServiceByName('containerID1')->shouldReturn($listener);
     $this->trigger('test1', $event);
     $this->removeServiceSubscriber($sub);
     $this->getServiceListeners()->shouldNotHaveKey('test1');
 }