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); } }