Ajout d'une liste de tickets

This commit is contained in:
2025-07-04 09:00:12 +00:00
parent 70955573e8
commit 11698a52e3
11 changed files with 628 additions and 9 deletions

View File

@@ -81,6 +81,7 @@ class TicketNormalizerTest extends KernelTestCase
$t,
[
'type' => 'ticket_ticket',
'type_extended' => 'ticket_ticket:extended',
'createdAt' => $t->getCreatedAt()?->getTimestamp(),
'createdBy' => ['user'],
'id' => null,
@@ -131,6 +132,7 @@ class TicketNormalizerTest extends KernelTestCase
$ticket,
[
'type' => 'ticket_ticket',
'type_extended' => 'ticket_ticket:extended',
'createdAt' => $ticket->getCreatedAt()?->getTimestamp(),
'createdBy' => ['user'],
'id' => null,
@@ -169,6 +171,7 @@ class TicketNormalizerTest extends KernelTestCase
$ticket,
[
'type' => 'ticket_ticket',
'type_extended' => 'ticket_ticket:extended',
'createdAt' => $ticket->getCreatedAt()?->getTimestamp(),
'createdBy' => null,
'id' => null,
@@ -189,6 +192,86 @@ class TicketNormalizerTest extends KernelTestCase
];
}
public function testNormalizeReadSimple(): void
{
// Create a ticket with some data
$ticket = new Ticket();
$ticket->setExternalRef('TEST-123');
// Add state history
new StateHistory(StateEnum::OPEN, $ticket, new \DateTimeImmutable('2024-06-16T00:00:00Z'));
// Add emergency status
new EmergencyStatusHistory(EmergencyStatusEnum::YES, $ticket, new \DateTimeImmutable('2024-06-16T00:00:10Z'));
// Add person
$personHistory = new PersonHistory(new Person(), $ticket, new \DateTimeImmutable('2024-04-01T12:00:00'));
// Add motive
$motiveHistory = new MotiveHistory(new Motive(), $ticket, new \DateTimeImmutable('2024-04-01T12:02:00'));
// Add comment
$comment = new Comment('Test comment', $ticket);
$comment->setCreatedAt(new \DateTimeImmutable('2024-04-01T12:04:00'));
$comment->setCreatedBy(new User());
// Add addressee
new AddresseeHistory(new User(), new \DateTimeImmutable('2024-04-01T12:05:00'), $ticket);
// Add caller
new CallerHistory(new Person(), $ticket, new \DateTimeImmutable('2024-04-01T12:00:00'));
// Set created/updated metadata
$ticket->setCreatedAt(new \DateTimeImmutable('2024-06-16T00:00:00Z'));
$ticket->setCreatedBy(new User());
$ticket->setUpdatedAt(new \DateTimeImmutable('2024-06-16T00:00:00Z'));
$ticket->setUpdatedBy(new User());
// Normalize with read:simple group
$actual = $this->buildNormalizer()->normalize($ticket, 'json', ['groups' => 'read:simple']);
// Expected keys in read:simple normalization
$expectedKeys = [
'type',
'type_extended',
'id',
'externalRef',
'currentPersons',
'currentAddressees',
'currentInputs',
'currentMotive',
'currentState',
'emergency',
'caller',
];
// Keys that should not be present in read:simple normalization
$unexpectedKeys = [
'history',
'createdAt',
'updatedAt',
'updatedBy',
'createdBy',
];
// Assert that all expected keys are present
foreach ($expectedKeys as $key) {
self::assertArrayHasKey($key, $actual, "Expected key '{$key}' is missing");
}
// Assert that none of the unexpected keys are present
foreach ($unexpectedKeys as $key) {
self::assertArrayNotHasKey($key, $actual, "Unexpected key '{$key}' is present");
}
// Assert specific values
self::assertEquals('ticket_ticket', $actual['type']);
self::assertEquals('ticket_ticket:simple', $actual['type_extended']);
self::assertEquals('TEST-123', $actual['externalRef']);
self::assertEquals('open', $actual['currentState']);
self::assertEquals('yes', $actual['emergency']);
}
private function buildNormalizer(): TicketNormalizer
{
$normalizer = $this->prophesize(NormalizerInterface::class);