diff --git a/src/Bundle/ChillMainBundle/Service/Mailer/ChillMailer.php b/src/Bundle/ChillMainBundle/Service/Mailer/ChillMailer.php index 3edee4763..1d2cf836e 100644 --- a/src/Bundle/ChillMainBundle/Service/Mailer/ChillMailer.php +++ b/src/Bundle/ChillMainBundle/Service/Mailer/ChillMailer.php @@ -12,9 +12,11 @@ declare(strict_types=1); namespace Chill\MainBundle\Service\Mailer; use Psr\Log\LoggerInterface; +use Symfony\Bridge\Twig\Mime\TemplatedEmail; use Symfony\Component\Mailer\Envelope; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Address; +use Symfony\Component\Mime\BodyRendererInterface; use Symfony\Component\Mime\Email; use Symfony\Component\Mime\RawMessage; @@ -22,7 +24,7 @@ class ChillMailer implements MailerInterface { private string $prefix = '[Chill] '; - public function __construct(private readonly MailerInterface $initial, private readonly LoggerInterface $chillLogger) {} + public function __construct(private readonly MailerInterface $initial, private readonly LoggerInterface $chillLogger, private readonly BodyRendererInterface $bodyRenderer) {} public function send(RawMessage $message, ?Envelope $envelope = null): void { @@ -30,6 +32,10 @@ class ChillMailer implements MailerInterface $message->subject($this->prefix.$message->getSubject()); } + if ($message instanceof TemplatedEmail) { + $this->bodyRenderer->render($message); + } + $this->chillLogger->info('chill email sent', [ 'to' => array_map(static fn (Address $address) => $address->getAddress(), $message->getTo()), 'subject' => $message->getSubject(), diff --git a/src/Bundle/ChillMainBundle/Tests/Workflow/Messenger/PostSendExternalMessageHandlerTest.php b/src/Bundle/ChillMainBundle/Tests/Workflow/Messenger/PostSendExternalMessageHandlerTest.php index 9f3542291..a3fc47d4c 100644 --- a/src/Bundle/ChillMainBundle/Tests/Workflow/Messenger/PostSendExternalMessageHandlerTest.php +++ b/src/Bundle/ChillMainBundle/Tests/Workflow/Messenger/PostSendExternalMessageHandlerTest.php @@ -14,6 +14,8 @@ namespace Chill\MainBundle\Tests\Workflow\Messenger; use Chill\MainBundle\Entity\User; use Chill\MainBundle\Entity\Workflow\EntityWorkflow; use Chill\MainBundle\Repository\Workflow\EntityWorkflowRepository; +use Chill\MainBundle\Workflow\EntityWorkflowHandlerInterface; +use Chill\MainBundle\Workflow\EntityWorkflowManager; use Chill\MainBundle\Workflow\Messenger\PostSendExternalMessage; use Chill\MainBundle\Workflow\Messenger\PostSendExternalMessageHandler; use Chill\MainBundle\Workflow\WorkflowTransitionContextDTO; @@ -25,6 +27,7 @@ use Symfony\Bridge\Twig\Mime\TemplatedEmail; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Address; use Symfony\Component\Mime\BodyRendererInterface; +use Symfony\Component\Workflow\Registry; /** * @internal @@ -50,10 +53,12 @@ class PostSendExternalMessageHandlerTest extends TestCase $mailer->send(Argument::that($this->buildCheckAddressCallback('3party@example.com')))->shouldBeCalledOnce(); $mailer->send(Argument::that($this->buildCheckAddressCallback('external@example.com')))->shouldBeCalledOnce(); - $bodyRenderer = $this->prophesize(BodyRendererInterface::class); - $bodyRenderer->render(Argument::type(TemplatedEmail::class))->shouldBeCalledTimes(2); + $workflowHandler = $this->prophesize(EntityWorkflowHandlerInterface::class); + $workflowHandler->getEntityTitle($entityWorkflow, Argument::any())->willReturn('title'); + $workflowManager = $this->prophesize(EntityWorkflowManager::class); + $workflowManager->getHandler($entityWorkflow)->willReturn($workflowHandler->reveal()); - $handler = new PostSendExternalMessageHandler($repository->reveal(), $mailer->reveal(), $bodyRenderer->reveal()); + $handler = new PostSendExternalMessageHandler($repository->reveal(), $mailer->reveal(), $workflowManager->reveal()); $handler(new PostSendExternalMessage(1, 'fr')); diff --git a/src/Bundle/ChillMainBundle/Workflow/Messenger/PostSendExternalMessageHandler.php b/src/Bundle/ChillMainBundle/Workflow/Messenger/PostSendExternalMessageHandler.php index e81626d5f..e6c496a61 100644 --- a/src/Bundle/ChillMainBundle/Workflow/Messenger/PostSendExternalMessageHandler.php +++ b/src/Bundle/ChillMainBundle/Workflow/Messenger/PostSendExternalMessageHandler.php @@ -25,7 +25,6 @@ final readonly class PostSendExternalMessageHandler implements MessageHandlerInt public function __construct( private EntityWorkflowRepository $entityWorkflowRepository, private MailerInterface $mailer, - private BodyRendererInterface $bodyRenderer, private EntityWorkflowManager $workflowManager, ) {} @@ -56,7 +55,6 @@ final readonly class PostSendExternalMessageHandler implements MessageHandlerInt 'lang' => $message->lang, ]); - $this->bodyRenderer->render($email); $this->mailer->send($email); } }