slaEvents->take(5)', $view); self::assertStringContainsString('actor_name', $service); self::assertStringContainsString('response_seconds', $service); self::assertStringContainsString('resolved_seconds', $service); } /** * Public reply counts must include threaded public replies, not only root comments. */ public function test_public_reply_count_uses_all_ticket_comments(): void { $componentPath = dirname(__DIR__, 2) . '/Livewire/TicketShow.php'; $component = file_get_contents($componentPath); self::assertIsString($component); self::assertStringContainsString('Comment::query()', $component); self::assertStringContainsString("where('ticket_id', \$ticket->id)", $component); self::assertStringContainsString("\$comments->where('is_internal', false)->count()", $component); self::assertStringNotContainsString('$ticket->comments() ->active()', $component); } }