Add createInvitation tests: success, multiple billets, empty fields, invalid billet, access denied, invitations tab

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-21 18:36:53 +01:00
parent e834dad706
commit decbe99ae3

View File

@@ -1603,6 +1603,138 @@ class AccountControllerTest extends WebTestCase
self::assertResponseRedirects();
}
public function testCreateInvitation(): void
{
$client = static::createClient();
$em = static::getContainer()->get(EntityManagerInterface::class);
$user = $this->createUser(['ROLE_ORGANIZER'], true);
$event = $this->createEvent($em, $user);
$category = $this->createCategory($em, $event);
$billet = $this->createBillet($em, $category);
$billetOrderService = $this->createMock(\App\Service\BilletOrderService::class);
$billetOrderService->expects(self::once())->method('generateOrderTickets');
$billetOrderService->expects(self::once())->method('generateAndSendTickets');
static::getContainer()->set(\App\Service\BilletOrderService::class, $billetOrderService);
$client->loginUser($user);
$client->request('POST', '/mon-compte/evenement/'.$event->getId().'/invitation', [
'first_name' => 'Jean',
'last_name' => 'Invite',
'email' => 'invite@test.fr',
'items' => [
['billet_id' => $billet->getId(), 'quantity' => 2],
],
]);
self::assertResponseRedirects('/mon-compte/evenement/'.$event->getId().'/modifier?tab=invitations');
}
public function testCreateInvitationMultipleBillets(): void
{
$client = static::createClient();
$em = static::getContainer()->get(EntityManagerInterface::class);
$user = $this->createUser(['ROLE_ORGANIZER'], true);
$event = $this->createEvent($em, $user);
$category = $this->createCategory($em, $event);
$billet1 = $this->createBillet($em, $category, 'VIP', 2000);
$billet2 = $this->createBillet($em, $category, 'Standard', 1000);
$billetOrderService = $this->createMock(\App\Service\BilletOrderService::class);
$billetOrderService->expects(self::once())->method('generateOrderTickets');
$billetOrderService->expects(self::once())->method('generateAndSendTickets');
static::getContainer()->set(\App\Service\BilletOrderService::class, $billetOrderService);
$client->loginUser($user);
$client->request('POST', '/mon-compte/evenement/'.$event->getId().'/invitation', [
'first_name' => 'Marie',
'last_name' => 'Double',
'email' => 'marie@test.fr',
'items' => [
['billet_id' => $billet1->getId(), 'quantity' => 1],
['billet_id' => $billet2->getId(), 'quantity' => 3],
],
]);
self::assertResponseRedirects('/mon-compte/evenement/'.$event->getId().'/modifier?tab=invitations');
}
public function testCreateInvitationEmptyFields(): void
{
$client = static::createClient();
$em = static::getContainer()->get(EntityManagerInterface::class);
$user = $this->createUser(['ROLE_ORGANIZER'], true);
$event = $this->createEvent($em, $user);
$client->loginUser($user);
$client->request('POST', '/mon-compte/evenement/'.$event->getId().'/invitation', [
'first_name' => '',
'last_name' => '',
'email' => '',
'items' => [],
]);
self::assertResponseRedirects('/mon-compte/evenement/'.$event->getId().'/modifier?tab=invitations');
}
public function testCreateInvitationInvalidBillet(): void
{
$client = static::createClient();
$em = static::getContainer()->get(EntityManagerInterface::class);
$user = $this->createUser(['ROLE_ORGANIZER'], true);
$event = $this->createEvent($em, $user);
$client->loginUser($user);
$client->request('POST', '/mon-compte/evenement/'.$event->getId().'/invitation', [
'first_name' => 'Jean',
'last_name' => 'Test',
'email' => 'jean@test.fr',
'items' => [
['billet_id' => 999999, 'quantity' => 1],
],
]);
self::assertResponseRedirects('/mon-compte/evenement/'.$event->getId().'/modifier?tab=invitations');
}
public function testCreateInvitationDeniedForOtherUser(): void
{
$client = static::createClient();
$em = static::getContainer()->get(EntityManagerInterface::class);
$owner = $this->createUser(['ROLE_ORGANIZER'], true);
$other = $this->createUser(['ROLE_ORGANIZER'], true);
$event = $this->createEvent($em, $owner);
$client->loginUser($other);
$client->request('POST', '/mon-compte/evenement/'.$event->getId().'/invitation', [
'first_name' => 'Hack',
'last_name' => 'Test',
'email' => 'hack@test.fr',
'items' => [],
]);
self::assertResponseStatusCodeSame(403);
}
public function testEditEventInvitationsTab(): void
{
$client = static::createClient();
$em = static::getContainer()->get(EntityManagerInterface::class);
$user = $this->createUser(['ROLE_ORGANIZER'], true);
$event = $this->createEvent($em, $user);
$client->loginUser($user);
$client->request('GET', '/mon-compte/evenement/'.$event->getId().'/modifier?tab=invitations');
self::assertResponseIsSuccessful();
}
public function testCancelOrder(): void
{
$client = static::createClient();