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

67 lines
2.0 KiB
PHP

<?php
use App\Models\Cron;
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;
beforeEach(function () {
$this->user = User::factory()->create(['email_verified_at' => now()]);
$this->server = Server::factory()->create(['name' => 'detail-srv']);
$this->site = Site::factory()->create([
'server_id' => $this->server->id,
'domain' => 'detail-test.de',
'wp_version' => '6.5',
'php_version' => '8.3',
]);
});
it('redirects guests', function () {
get(route('sites.show', $this->site))->assertRedirect(route('login'));
});
it('renders the overview tab by default', function () {
actingAs($this->user)->get(route('sites.show', $this->site))
->assertStatus(200)
->assertSeeText('detail-test.de')
->assertSeeText('Übersicht')
->assertSeeText('WordPress')
->assertSeeText('PHP / ini')
->assertSeeText('Datei-Manager')
->assertSeeText('Cronjobs')
->assertSeeText('Logs')
->assertSeeText('Installation')
->assertSeeText('Schnellaktionen');
});
it('switches between all six tabs', function () {
foreach (['wordpress', 'php', 'files', 'cron', 'logs', 'overview'] as $tab) {
livewire('pages.sites.show', ['site' => $this->site])
->call('setTab', $tab)
->assertSet('tab', $tab);
}
});
it('lists site crons in the cron tab', function () {
Cron::factory()->create([
'site_id' => $this->site->id,
'name' => 'Test Cronjob XYZ',
]);
livewire('pages.sites.show', ['site' => $this->site])
->call('setTab', 'cron')
->assertSeeText('Test Cronjob XYZ');
});
it('toggles maintenance mode and persists', function () {
expect($this->site->maintenance_mode)->toBeFalse();
livewire('pages.sites.show', ['site' => $this->site])
->call('toggleMaintenance');
expect($this->site->fresh()->maintenance_mode)->toBeTrue();
});