57 lines
1.7 KiB
PHP
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);
|
|
}
|
|
}
|