39 lines
1.4 KiB
PHP
39 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Modules\Helpdesk\Tests\Feature;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
final class TicketUserNPlusOneFilesTest extends TestCase
|
|
{
|
|
public function test_ticket_queries_only_eager_load_required_relations(): void
|
|
{
|
|
$index = file_get_contents(dirname(__DIR__, 2).'/Livewire/TicketIndex.php');
|
|
$kanban = file_get_contents(dirname(__DIR__, 2).'/Livewire/KanbanBoard.php');
|
|
$dashboard = file_get_contents(dirname(__DIR__, 2).'/Livewire/HelpdeskDashboardWidget.php');
|
|
|
|
self::assertIsString($index);
|
|
self::assertIsString($kanban);
|
|
self::assertIsString($dashboard);
|
|
|
|
// Index deliberately avoids loading user relations.
|
|
self::assertStringNotContainsString("'user:id,name,email'", $index);
|
|
self::assertStringNotContainsString("'owner:id,name,email'", $index);
|
|
self::assertStringNotContainsString("'agent:id,name,email'", $index);
|
|
|
|
self::assertStringContainsString("'owner:id,name,email'", $kanban);
|
|
|
|
self::assertStringContainsString("'agent:id,name,email'", $kanban);
|
|
|
|
// Dashboard intentionally only loads the relations it renders.
|
|
|
|
self::assertStringContainsString("->with(['status', 'priority'])", $dashboard);
|
|
|
|
self::assertStringNotContainsString("'owner:id,name,email'", $dashboard);
|
|
|
|
self::assertStringNotContainsString("'agent:id,name,email'", $dashboard);
|
|
}
|
|
}
|