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

64 lines
2.3 KiB
PHP

<?php
use App\Models\Server;
use App\Models\Site;
use App\Models\User;
use function Pest\Laravel\actingAs;
use function Pest\Laravel\get;
use function Pest\Livewire\livewire;
it('redirects guests to login', function () {
get(route('sites.index'))->assertRedirect(route('login'));
});
it('renders the sites page chrome for an auth user', function () {
$user = User::factory()->create(['email_verified_at' => now()]);
actingAs($user)->get(route('sites.index'))
->assertStatus(200)
->assertSeeText('Sites')
->assertSeeText('Sites Online')
->assertSeeText('Updates offen')
->assertSeeText('Ø PageSpeed')
->assertSeeText('Besucher / 24h')
->assertSeeText('Site hinzufügen')
->assertSee('clu-seg', false)
->assertSee('clu-pager', false)
->assertSee('clu-table', false);
});
it('lists seeded sites and paginates', function () {
$user = User::factory()->create(['email_verified_at' => now()]);
$server = Server::factory()->create(['name' => 'test-srv-01']);
Site::factory()->count(20)->create(['server_id' => $server->id]);
actingAs($user)->get(route('sites.index'))
->assertStatus(200)
->assertSee('test-srv-01')
->assertSeeText('von 20');
});
it('filters by search term', function () {
$user = User::factory()->create(['email_verified_at' => now()]);
$server = Server::factory()->create();
Site::factory()->create(['server_id' => $server->id, 'domain' => 'unique-match-1.test']);
Site::factory()->create(['server_id' => $server->id, 'domain' => 'other.test']);
livewire('pages.sites.index')
->set('search', 'unique-match')
->assertSee('unique-match-1.test')
->assertDontSee('other.test');
});
it('filters by status segment', function () {
$user = User::factory()->create(['email_verified_at' => now()]);
$server = Server::factory()->create();
Site::factory()->create(['server_id' => $server->id, 'status' => 'ok', 'domain' => 'healthy.test']);
Site::factory()->create(['server_id' => $server->id, 'status' => 'bad', 'domain' => 'broken.test']);
livewire('pages.sites.index')
->call('setFilter', 'critical')
->assertSee('broken.test')
->assertDontSee('healthy.test');
});