Files
WMS/Modules/Helpdesk/Tests/Unit/TicketReferenceServiceTest.php
T
2026-06-23 13:39:02 +01:00

57 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace Modules\Helpdesk\Tests\Unit;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Modules\Helpdesk\Services\TicketReferenceService;
use Modules\Helpdesk\Tests\Concerns\BuildsHelpdeskFixtures;
use Tests\TestCase;
final class TicketReferenceServiceTest extends TestCase
{
use BuildsHelpdeskFixtures;
use RefreshDatabase;
public function test_it_generates_the_first_reference_for_the_current_year(): void
{
$reference = app(TicketReferenceService::class)->next();
self::assertSame('HD-' . now()->format('Y') . '-00001', $reference);
}
public function test_it_generates_the_next_reference_after_existing_tickets(): void
{
$this->ticket(['reference' => 'HD-' . now()->format('Y') . '-00041']);
$reference = app(TicketReferenceService::class)->next();
self::assertSame('HD-' . now()->format('Y') . '-00042', $reference);
}
public function test_it_does_not_reuse_soft_deleted_ticket_references(): void
{
$year = now()->format('Y');
$ticket = $this->ticket(['reference' => 'HD-' . $year . '-00002']);
$ticket->delete();
$reference = app(TicketReferenceService::class)->next();
self::assertSame('HD-' . $year . '-00003', $reference);
}
public function test_it_uses_the_highest_reference_suffix_instead_of_latest_database_id(): void
{
$year = now()->format('Y');
$this->ticket(['reference' => 'HD-' . $year . '-00042']);
$this->ticket(['reference' => 'HD-' . $year . '-00002']);
$reference = app(TicketReferenceService::class)->next();
self::assertSame('HD-' . $year . '-00043', $reference);
}
}