public function testAnnotatedHandlersRecognized() { // $delegate = new SimpleEventBus(new InMemoryEventListenerRegistry()); $listener = new MyReplayAwareListener(); $adapter = new AnnotatedEventListenerAdapter($listener, $this->delegate, new SimpleAnnotationReaderFactory()); $this->delegate->getEventListenerRegistry()->subscribe($adapter); $this->testSubject->startReplay(); $this->assertEquals(0, $listener->counter); $this->assertEquals(1, $listener->before); $this->assertEquals(1, $listener->after); }
public function testEventIsDispatchedToSubscribedListeners() { $this->assertNotSame($this->listener1, $this->listener2); $this->assertNotSame($this->listener1, $this->listener3); $this->listener1->expects($this->exactly(2))->method('handle'); $this->listener2->expects($this->exactly(2))->method('handle'); $this->listener3->expects($this->exactly(2))->method('handle'); $this->testSubject->publish($this->newEvent()); $this->testSubject->getEventListenerRegistry()->subscribe($this->listener1); // subscribing twice should not make a difference $this->testSubject->getEventListenerRegistry()->subscribe($this->listener1); $this->testSubject->publish($this->newEvent()); $this->testSubject->getEventListenerRegistry()->subscribe($this->listener2); $this->testSubject->getEventListenerRegistry()->subscribe($this->listener3); $this->testSubject->publish($this->newEvent()); $this->testSubject->getEventListenerRegistry()->unsubscribe($this->listener1); $this->testSubject->publish($this->newEvent()); $this->testSubject->getEventListenerRegistry()->unsubscribe($this->listener2); $this->testSubject->getEventListenerRegistry()->unsubscribe($this->listener3); // unsubscribe a non-subscribed listener should not fail $this->testSubject->getEventListenerRegistry()->unsubscribe($this->listener3); $this->testSubject->publish($this->newEvent()); }