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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user