mailer = $this->getMockBuilder(MailerInterface::class)->disableOriginalConstructor()->getMock(); $this->opentalentNoReplyEmailAddress = 'noreply@opentalent.fr'; $this->contactPointUtils = $this->getMockBuilder(ContactPointUtils::class)->disableOriginalConstructor()->getMock(); $this->accessUtils = $this->getMockBuilder(AccessUtils::class)->disableOriginalConstructor()->getMock(); } public function testSendAutomaticEmailTo(): void { $mailerHub = $this->getMockBuilder(MailHub::class) ->setConstructorArgs([$this->mailer, $this->opentalentNoReplyEmailAddress, $this->contactPointUtils, $this->accessUtils]) ->setMethodsExcept(['sendAutomaticEmailTo']) ->getMock(); $contactPoint = $this->getMockBuilder(ContactPoint::class)->disableOriginalConstructor()->getMock(); $contactPoint->method('getEmail')->willReturn('mail@domain.net'); $person = $this->getMockBuilder(Person::class)->disableOriginalConstructor()->getMock(); $person->method('getFullName')->willReturn('Don Diego de la Vega'); $person->method('getUsername')->willReturn('zorro2000'); $access = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock(); $access->method('getPerson')->willReturn($person); $this->contactPointUtils->expects(self::once())->method('getPersonContactPointPrincipal')->willReturn($contactPoint); $this->mailer ->expects(self::once()) ->method('send') ->with(self::isInstanceOf(TemplatedEmail::class)); $mailerHub->sendAutomaticEmailTo($access, 'subject', 'a_template', []); } public function testSendAutomaticEmailToButNoAddress(): void { $mailerHub = $this->getMockBuilder(MailHub::class) ->setConstructorArgs([$this->mailer, $this->opentalentNoReplyEmailAddress, $this->contactPointUtils, $this->accessUtils]) ->setMethodsExcept(['sendAutomaticEmailTo']) ->getMock(); $access = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock(); $this->contactPointUtils->expects(self::once())->method('getPersonContactPointPrincipal')->willReturn(null); $this->expectException(\RuntimeException::class); $mailerHub->sendAutomaticEmailTo($access, 'subject', 'a_template', []); } public function testSendAutomaticEmailToAdmin(): void { $mailerHub = $this->getMockBuilder(MailHub::class) ->setConstructorArgs([$this->mailer, $this->opentalentNoReplyEmailAddress, $this->contactPointUtils, $this->accessUtils]) ->setMethodsExcept(['sendAutomaticEmailToAdmin']) ->getMock(); $organization = $this->getMockBuilder(\App\Entity\Organization\Organization::class)->disableOriginalConstructor()->getMock(); $admin = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock(); $this->accessUtils->expects(self::once())->method('findAdminFor')->with($organization)->willReturn($admin); $mailerHub ->expects(self::once()) ->method('sendAutomaticEmailTo') ->with($admin, 'subject', 'template', []); $mailerHub->sendAutomaticEmailToAdmin($organization, 'subject', 'template', []); } public function testSendAutomaticEmailToAdminButNoAdmin(): void { $mailerHub = $this->getMockBuilder(MailHub::class) ->setConstructorArgs([$this->mailer, $this->opentalentNoReplyEmailAddress, $this->contactPointUtils, $this->accessUtils]) ->setMethodsExcept(['sendAutomaticEmailToAdmin']) ->getMock(); $organization = $this->getMockBuilder(\App\Entity\Organization\Organization::class)->disableOriginalConstructor()->getMock(); $this->accessUtils ->expects(self::once()) ->method('findAdminFor') ->with($organization) ->willReturn(null); $this->expectException(\RuntimeException::class); $mailerHub->sendAutomaticEmailToAdmin($organization, 'subject', 'template', []); } }