public function testShouldNotDelegatesHandlingOfPublishedEventsToUnsubscribedListeners()
 {
     $event1 = new EventStub();
     $event2 = new EventStub();
     $listener1 = $this->getMockBuilder('RayRutjes\\DomainFoundation\\EventBus\\EventListener')->getMock();
     $listener1->expects($this->exactly(2))->method('handle')->withConsecutive($this->identicalTo($event1), $this->identicalTo($event2));
     $listener2 = $this->getMockBuilder('RayRutjes\\DomainFoundation\\EventBus\\EventListener')->getMock();
     $listener2->expects($this->never())->method('handle');
     $this->eventBus->subscribe($listener1);
     $this->eventBus->subscribe($listener2);
     $this->eventBus->unsubscribe($listener2);
     $this->eventBus->publish($event1, $event2);
 }
 private function registerUserCommands()
 {
     $simpleEventBus = new SimpleEventBus();
     $userRepository = new PdoUserRepository($this->unitOfWork, $this->pdo, $simpleEventBus);
     $passwordHashingService = new BcryptPasswordHashingService();
     $registerUserService = new RegisterUserService($passwordHashingService);
     // Register User.
     $this->commandHandlerRegistry->subscribe(RegisterUserCommand::class, new RegisterUserCommandHandler($registerUserService, $userRepository));
     // Change Username.
     $this->commandHandlerRegistry->subscribe(ChangeUsernameCommand::class, new ChangeUsernameCommandHandler($userRepository));
     // Change Password.
     $this->commandHandlerRegistry->subscribe(ChangeUserPasswordCommand::class, new ChangeUserPasswordCommandHandler($userRepository, $passwordHashingService));
     $claimedUsernamesProjection = new ClaimedUsernamesProjection($this->pdo);
     $simpleEventBus->subscribe($claimedUsernamesProjection);
 }