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); }