setEmail('user1@foo.com'); $user2 = (new User())->setEmail('user2@foo.com'); $user3 = (new User())->setEmail('user3@foo.com'); $notification = new Notification(); $notification ->setTitle('test notification') ->setSender($user1) ->addAddressee($user2) ->addAddressee($user3) ; $comment = (new NotificationComment()) ->setContent("foo bar baz") ->setCreatedBy($user2) ; $notification->addComment($comment); $mailer = $this->prophesize(MailerInterface::class); // a mail only to user1 and user3 should have been sent $mailer->send(Argument::that(function (Email $email) { foreach ($email->getTo() as $address) { if ($address->getAddress() === 'user1@foo.com' || $address->getAddress() === 'user3@foo.com') { return true; } } return false; }))->shouldBeCalledTimes(2); $objectManager = $this->prophesize(EntityManagerInterface::class); $mailer = $this->buildNotificationMailer($mailer->reveal()); $mailer->postPersistComment($comment, new PostPersistEventArgs($comment, $objectManager->reveal())); } public function testPostPersistCommentDestWithNullEmail(): void { $user1 = (new User())->setEmail('user1@foo.com'); $user2 = (new User())->setEmail('user2@foo.com'); $user3 = (new User())->setEmail(null); $notification = new Notification(); $notification ->setTitle('test notification') ->setSender($user1) ->addAddressee($user2) ->addAddressee($user3) ; $comment = (new NotificationComment()) ->setContent("foo bar baz") ->setCreatedBy($user2) ; $notification->addComment($comment); $mailer = $this->prophesize(MailerInterface::class); // a mail only to user1 and user3 should have been sent $mailer->send(Argument::that(function (Email $email) { foreach ($email->getTo() as $address) { if ($address->getAddress() === 'user1@foo.com') { return true; } } return false; }))->shouldBeCalledTimes(1); $objectManager = $this->prophesize(EntityManagerInterface::class); $mailer = $this->buildNotificationMailer($mailer->reveal()); $mailer->postPersistComment($comment, new PostPersistEventArgs($comment, $objectManager->reveal())); } private function buildNotificationMailer( MailerInterface $mailer = null, ): NotificationMailer { return new NotificationMailer( $mailer, new NullLogger(), new Translator('fr') ); } }