diff --git a/src/Bundle/ChillMainBundle/Tests/Workflow/Messenger/PostPublicViewMessageHandlerTest.php b/src/Bundle/ChillMainBundle/Tests/Workflow/Messenger/PostPublicViewMessageHandlerTest.php index 7253099e1..a03292f05 100644 --- a/src/Bundle/ChillMainBundle/Tests/Workflow/Messenger/PostPublicViewMessageHandlerTest.php +++ b/src/Bundle/ChillMainBundle/Tests/Workflow/Messenger/PostPublicViewMessageHandlerTest.php @@ -20,6 +20,7 @@ use Chill\MainBundle\Workflow\Messenger\PostPublicViewMessage; use Chill\MainBundle\Workflow\Messenger\PostPublicViewMessageHandler; use Chill\MainBundle\Workflow\WorkflowTransitionContextDTO; use Chill\ThirdPartyBundle\Entity\ThirdParty; +use Doctrine\ORM\EntityManagerInterface; use PHPUnit\Framework\TestCase; use Prophecy\PhpUnit\ProphecyTrait; use Psr\Log\NullLogger; @@ -77,6 +78,19 @@ class PostPublicViewMessageHandlerTest extends TestCase return $registry; } + private function buildEntityManager(bool $mustBeFlushed = false): EntityManagerInterface + { + $entityManager = $this->prophesize(EntityManagerInterface::class); + $flush = $entityManager->flush(); + $entityManager->clear()->shouldBeCalled(); + + if ($mustBeFlushed) { + $flush->shouldBeCalled(); + } + + return $entityManager->reveal(); + } + public function testHandleTransitionToPostViewSuccessful(): void { $entityWorkflow = new EntityWorkflow(); @@ -90,7 +104,7 @@ class PostPublicViewMessageHandlerTest extends TestCase $repository = $this->prophesize(EntityWorkflowSendViewRepository::class); $repository->find(6)->willReturn($view); - $handler = new PostPublicViewMessageHandler($repository->reveal(), $this->buildRegistry(), new NullLogger()); + $handler = new PostPublicViewMessageHandler($repository->reveal(), $this->buildRegistry(), new NullLogger(), $this->buildEntityManager(true)); $handler(new PostPublicViewMessage(6)); @@ -115,7 +129,7 @@ class PostPublicViewMessageHandlerTest extends TestCase $repository = $this->prophesize(EntityWorkflowSendViewRepository::class); $repository->find(6)->willReturn($view); - $handler = new PostPublicViewMessageHandler($repository->reveal(), $this->buildRegistry(), new NullLogger()); + $handler = new PostPublicViewMessageHandler($repository->reveal(), $this->buildRegistry(), new NullLogger(), $this->buildEntityManager()); $handler(new PostPublicViewMessage(6)); @@ -136,7 +150,7 @@ class PostPublicViewMessageHandlerTest extends TestCase $repository = $this->prophesize(EntityWorkflowSendViewRepository::class); $repository->find(6)->willReturn($view); - $handler = new PostPublicViewMessageHandler($repository->reveal(), $this->buildRegistry(), new NullLogger()); + $handler = new PostPublicViewMessageHandler($repository->reveal(), $this->buildRegistry(), new NullLogger(), $this->buildEntityManager()); $handler(new PostPublicViewMessage(6)); diff --git a/src/Bundle/ChillMainBundle/Workflow/Messenger/PostPublicViewMessageHandler.php b/src/Bundle/ChillMainBundle/Workflow/Messenger/PostPublicViewMessageHandler.php index 325ac9ba2..ccf566137 100644 --- a/src/Bundle/ChillMainBundle/Workflow/Messenger/PostPublicViewMessageHandler.php +++ b/src/Bundle/ChillMainBundle/Workflow/Messenger/PostPublicViewMessageHandler.php @@ -13,6 +13,7 @@ namespace Chill\MainBundle\Workflow\Messenger; use Chill\MainBundle\Repository\EntityWorkflowSendViewRepository; use Chill\MainBundle\Workflow\WorkflowTransitionContextDTO; +use Doctrine\ORM\EntityManagerInterface; use Psr\Log\LoggerInterface; use Symfony\Component\Messenger\Handler\MessageHandlerInterface; use Symfony\Component\Workflow\Registry; @@ -32,6 +33,7 @@ final readonly class PostPublicViewMessageHandler implements MessageHandlerInter private EntityWorkflowSendViewRepository $sendViewRepository, private Registry $registry, private LoggerInterface $logger, + private EntityManagerInterface $entityManager, ) {} public function __invoke(PostPublicViewMessage $message): void @@ -51,6 +53,8 @@ final readonly class PostPublicViewMessageHandler implements MessageHandlerInter 'entityWorkflow' => $entityWorkflow->getId(), ]); + $this->entityManager->clear(); + return; } @@ -70,6 +74,9 @@ final readonly class PostPublicViewMessageHandler implements MessageHandlerInter 'transition' => $placeMetadata[self::TRANSITION_ON_VIEW], ]); + $this->entityManager->flush(); + $this->entityManager->clear(); + return; } $this->logger->info(self::LOG_PREFIX.'Not able to apply this transition', ['transition' => $placeMetadata[self::TRANSITION_ON_VIEW], @@ -77,5 +84,7 @@ final readonly class PostPublicViewMessageHandler implements MessageHandlerInter } } + + $this->entityManager->clear(); } }