/** * Handle an event. * * @param EventInterface $event * @param Context $context * * @return void */ public function handle(EventInterface $event, Context $context = null) { if (!$event instanceof UnableToCreateUserEvent) { return; } $this->logger->info('Send message', ['user' => $event->getUser()->getName(), 'type' => $event->getName()]); $messageContext = null; if ($context) { $messageContext = $this->messageFinder->findByReference($context->getValue()); } $message = $this->messageFactory->buildMessage([$event->getUser()], $event); if (!$message) { $this->logger->warning('Message could not be generated'); return; } $this->messageSender->send($message, $messageContext ? $messageContext->getSource() : null); }
/** * Init the mocks */ public function setUp() { $faker = Factory::create(); $this->user = new UndefinedApplicationUser(\Mockery::mock(Account::class)); $this->message = \Mockery::mock(Message::class); $this->contextValue = 'contextValue'; $this->context = \Mockery::mock(Context::class); $this->context->shouldReceive('getValue')->andReturn($this->contextValue); $this->source = 'src'; $this->sourceMessage = \Mockery::mock(SourceMessage::class); $this->sourceMessage->shouldReceive('getSource')->andReturn($this->source); $this->event = new UnableToCreateUserEvent(new ApplicationUserId($faker->uuid), $this->user); $this->messageFinder = \Mockery::mock(MessageFinder::class); $this->factory = \Mockery::mock(MessageFactory::class); $this->messageSender = \Mockery::mock(MessageSender::class); $this->serviceUnderTest = new UnableToCreateUserEventHandler($this->messageFinder, $this->factory, $this->messageSender); }
/** * @param Context $context * @return mixed */ private function getMessageContext(Context $context = null) { if (!$context) { return null; } $message = $this->messageFinder->findByReference($context->getValue()); return $message ? $message->getSource() : null; }