From 5f685d9d1f3cd49c6d8808fad0f5a1440844d06b Mon Sep 17 00:00:00 2001 From: Serreau Jovann Date: Thu, 2 Apr 2026 14:02:10 +0200 Subject: [PATCH] Cover setIsInvitation loop in createAccreditation test Mock generateOrderTickets to create a real BilletOrder in DB so the foreach loop setting isInvitation=true is exercised and verified. Co-Authored-By: Claude Opus 4.6 (1M context) --- tests/Controller/AccountControllerTest.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/Controller/AccountControllerTest.php b/tests/Controller/AccountControllerTest.php index 27533a5..861cfff 100644 --- a/tests/Controller/AccountControllerTest.php +++ b/tests/Controller/AccountControllerTest.php @@ -2567,7 +2567,18 @@ class AccountControllerTest extends WebTestCase $category = $this->createCategory($em, $event); $billetOrderService = $this->createMock(\App\Service\BilletOrderService::class); - $billetOrderService->expects(self::once())->method('generateOrderTickets'); + $billetOrderService->expects(self::once())->method('generateOrderTickets')->willReturnCallback(function (\App\Entity\BilletBuyer $order) use ($em) { + $billet = $em->getRepository(\App\Entity\Billet::class)->findOneBy(['category' => $order->getItems()->first()->getBillet()->getCategory()]); + $ticket = new \App\Entity\BilletOrder(); + $ticket->setBilletBuyer($order); + $ticket->setBillet($billet); + $ticket->setBilletName($billet->getName()); + $ticket->setUnitPriceHT(0); + $em->persist($ticket); + $order->setStatus(\App\Entity\BilletBuyer::STATUS_PAID); + $order->setPaidAt(new \DateTimeImmutable()); + $em->flush(); + }); $billetOrderService->expects(self::once())->method('generateAndSendTickets'); static::getContainer()->set(\App\Service\BilletOrderService::class, $billetOrderService); @@ -2580,6 +2591,10 @@ class AccountControllerTest extends WebTestCase ]); self::assertResponseRedirects('/mon-compte/evenement/'.$event->getId().'/modifier?tab=invitations'); + + $tickets = $em->getRepository(\App\Entity\BilletOrder::class)->findBy(['billetBuyer' => $em->getRepository(\App\Entity\BilletBuyer::class)->findOneBy(['email' => 'alice@test.fr'])]); + self::assertNotEmpty($tickets); + self::assertTrue($tickets[0]->isInvitation()); } public function testCreateAccreditationExposantSuccess(): void