mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-26 20:16:14 +00:00
162 lines
5.2 KiB
PHP
162 lines
5.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/*
|
|
* Chill is a software for social workers
|
|
*
|
|
* For the full copyright and license information, please view
|
|
* the LICENSE file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Chill\TicketBundle\Tests\Entity;
|
|
|
|
use Chill\MainBundle\Entity\User;
|
|
use Chill\MainBundle\Entity\UserGroup;
|
|
use Chill\PersonBundle\Entity\Person;
|
|
use Chill\TicketBundle\Entity\AddresseeHistory;
|
|
use Chill\TicketBundle\Entity\Motive;
|
|
use Chill\TicketBundle\Entity\MotiveHistory;
|
|
use Chill\TicketBundle\Entity\PersonHistory;
|
|
use Chill\TicketBundle\Entity\EmergencyStatusEnum;
|
|
use Chill\TicketBundle\Entity\EmergencyStatusHistory;
|
|
use Chill\TicketBundle\Entity\StateEnum;
|
|
use Chill\TicketBundle\Entity\StateHistory;
|
|
use Chill\TicketBundle\Entity\Ticket;
|
|
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
|
|
|
/**
|
|
* @internal
|
|
*
|
|
* @coversNothing
|
|
*/
|
|
class TicketTest extends KernelTestCase
|
|
{
|
|
public function testGetMotive(): void
|
|
{
|
|
$ticket = new Ticket();
|
|
$motive = new Motive();
|
|
|
|
self::assertNull($ticket->getMotive());
|
|
|
|
$history = new MotiveHistory($motive, $ticket);
|
|
|
|
self::assertSame($motive, $ticket->getMotive());
|
|
self::assertCount(1, $ticket->getMotiveHistories());
|
|
|
|
// replace motive
|
|
$motive2 = new Motive();
|
|
$history->setEndDate(new \DateTimeImmutable());
|
|
$history2 = new MotiveHistory($motive2, $ticket);
|
|
|
|
self::assertCount(2, $ticket->getMotiveHistories());
|
|
self::assertSame($motive2, $ticket->getMotive());
|
|
}
|
|
|
|
public function testGetPerson(): void
|
|
{
|
|
$ticket = new Ticket();
|
|
$person = new Person();
|
|
|
|
self::assertEquals([], $ticket->getPersons());
|
|
|
|
$history = new PersonHistory($person, $ticket, new \DateTimeImmutable('now'));
|
|
|
|
self::assertCount(1, $ticket->getPersons());
|
|
self::assertSame($person, $ticket->getPersons()[0]);
|
|
|
|
$history->setEndDate(new \DateTimeImmutable('now'));
|
|
|
|
self::assertCount(0, $ticket->getPersons());
|
|
}
|
|
|
|
public function testGetAddresse(): void
|
|
{
|
|
$ticket = new Ticket();
|
|
$user = new User();
|
|
$group = new UserGroup();
|
|
|
|
self::assertEquals([], $ticket->getCurrentAddressee());
|
|
|
|
$history = new AddresseeHistory($user, new \DateTimeImmutable('now'), $ticket);
|
|
|
|
self::assertCount(1, $ticket->getCurrentAddressee());
|
|
self::assertSame($user, $ticket->getCurrentAddressee()[0]);
|
|
|
|
$history2 = new AddresseeHistory($group, new \DateTimeImmutable('now'), $ticket);
|
|
|
|
self::assertCount(2, $ticket->getCurrentAddressee());
|
|
self::assertContains($group, $ticket->getCurrentAddressee());
|
|
|
|
$history->setEndDate(new \DateTimeImmutable('now'));
|
|
|
|
self::assertCount(1, $ticket->getCurrentAddressee());
|
|
self::assertSame($group, $ticket->getCurrentAddressee()[0]);
|
|
}
|
|
|
|
public function testGetAndSetExternalRef(): void
|
|
{
|
|
$ticket = new Ticket();
|
|
$externalRef = 'REF-123';
|
|
|
|
// Set the external reference
|
|
$ticket->setExternalRef($externalRef);
|
|
|
|
// Verify that getExternalRef returns the correct value
|
|
self::assertSame($externalRef, $ticket->getExternalRef());
|
|
|
|
// Change the external reference
|
|
$newExternalRef = 'REF-456';
|
|
$ticket->setExternalRef($newExternalRef);
|
|
|
|
// Verify that getExternalRef returns the updated value
|
|
self::assertSame($newExternalRef, $ticket->getExternalRef());
|
|
}
|
|
|
|
public function testGetState(): void
|
|
{
|
|
$ticket = new Ticket();
|
|
|
|
// Initially, the ticket has no state
|
|
self::assertNull($ticket->getState());
|
|
|
|
// Create a state history entry with the open state
|
|
$history = new StateHistory(StateEnum::OPEN, $ticket);
|
|
|
|
// Verify that the ticket now has the open state
|
|
self::assertSame(StateEnum::OPEN, $ticket->getState());
|
|
self::assertCount(1, $ticket->getStateHistories());
|
|
|
|
// Change the state to closed
|
|
$history->setEndDate(new \DateTimeImmutable());
|
|
$history2 = new StateHistory(StateEnum::CLOSED, $ticket);
|
|
|
|
// Verify that the ticket now has the closed state
|
|
self::assertCount(2, $ticket->getStateHistories());
|
|
self::assertSame(StateEnum::CLOSED, $ticket->getState());
|
|
}
|
|
|
|
public function testGetEmergencyStatus(): void
|
|
{
|
|
$ticket = new Ticket();
|
|
|
|
// Initially, the ticket has no emergency status
|
|
self::assertNull($ticket->getEmergencyStatus());
|
|
|
|
// Create an emergency status history entry with the YES status
|
|
$history = new EmergencyStatusHistory(EmergencyStatusEnum::YES, $ticket);
|
|
|
|
// Verify that the ticket now has the YES status
|
|
self::assertSame(EmergencyStatusEnum::YES, $ticket->getEmergencyStatus());
|
|
self::assertCount(1, $ticket->getEmergencyStatusHistories());
|
|
|
|
// Change the emergency status to NO
|
|
$history->setEndDate(new \DateTimeImmutable());
|
|
$history2 = new EmergencyStatusHistory(EmergencyStatusEnum::NO, $ticket);
|
|
|
|
// Verify that the ticket now has the NO status
|
|
self::assertCount(2, $ticket->getEmergencyStatusHistories());
|
|
self::assertSame(EmergencyStatusEnum::NO, $ticket->getEmergencyStatus());
|
|
}
|
|
}
|