clupilot/app/tests/Feature/Pages/DashboardPageTest.php

52 lines
1.7 KiB
PHP

<?php
use App\Models\Activity;
use App\Models\Cluster;
use App\Models\Server;
use App\Models\Site;
use App\Models\User;
use function Pest\Laravel\actingAs;
use function Pest\Laravel\get;
it('redirects guests to login', function () {
get(route('dashboard'))->assertRedirect(route('login'));
});
it('renders dashboard for an auth user', function () {
$user = User::factory()->create(['email_verified_at' => now()]);
// seed minimal data
$cluster = Cluster::factory()->create();
$server = Server::factory()->create(['cluster_id' => $cluster->id, 'name' => 'eu-prod-01']);
Site::factory()->count(3)->create(['server_id' => $server->id]);
Activity::factory()->count(5)->create(['user_id' => $user->id]);
actingAs($user)->get(route('dashboard'))
->assertStatus(200)
->assertSeeText('Dashboard')
->assertSeeText('Sites Online')
->assertSeeText('Ø Response')
->assertSeeText('Updates ausstehend')
->assertSeeText('Blocked / 24h')
->assertSeeText('Top Sites')
->assertSeeText('Aktivität')
->assertSee('clu-topbar', false)
->assertSee('clu-metric', false)
->assertSee('clu-sidebar', false)
->assertSee('clu-card', false);
});
it('shows seeded site rows in the top table', function () {
$user = User::factory()->create(['email_verified_at' => now()]);
$server = Server::factory()->create();
$site = Site::factory()->create([
'server_id' => $server->id,
'domain' => 'example-test.com',
'visitors_24h' => 9999,
]);
actingAs($user)->get(route('dashboard'))
->assertStatus(200)
->assertSeeText('example-test.com');
});