From eaecafc9b08e1abf1110f4b3014fcd5efa8bc86a Mon Sep 17 00:00:00 2001 From: Saeed Vaziry Date: Tue, 8 Oct 2024 23:00:16 +0200 Subject: [PATCH] migrating tests (Backups) --- app/Web/Pages/Servers/Console/Index.php | 2 + app/Web/Pages/Servers/Databases/Backups.php | 2 +- .../Servers/Metrics/Widgets/MetricDetails.php | 2 +- .../Pages/Servers/Metrics/Widgets/Metrics.php | 4 +- tests/Feature/DatabaseBackupTest.php | 58 ++++++++++++------- 5 files changed, 43 insertions(+), 25 deletions(-) diff --git a/app/Web/Pages/Servers/Console/Index.php b/app/Web/Pages/Servers/Console/Index.php index 5922eaf..562298e 100644 --- a/app/Web/Pages/Servers/Console/Index.php +++ b/app/Web/Pages/Servers/Console/Index.php @@ -14,6 +14,8 @@ class Index extends Page protected static ?string $title = 'Headless Console'; + protected static ?string $navigationLabel = 'Console'; + public function mount(): void { $this->authorize('manage', $this->server); diff --git a/app/Web/Pages/Servers/Databases/Backups.php b/app/Web/Pages/Servers/Databases/Backups.php index a367e32..171b849 100644 --- a/app/Web/Pages/Servers/Databases/Backups.php +++ b/app/Web/Pages/Servers/Databases/Backups.php @@ -31,7 +31,7 @@ public function mount(): void protected function getHeaderActions(): array { return [ - Action::make('Create backup') + Action::make('create') ->icon('heroicon-o-plus') ->modalWidth(MaxWidth::Large) ->authorize(fn () => auth()->user()?->can('create', [Backup::class, $this->server])) diff --git a/app/Web/Pages/Servers/Metrics/Widgets/MetricDetails.php b/app/Web/Pages/Servers/Metrics/Widgets/MetricDetails.php index 18056c8..19622fa 100644 --- a/app/Web/Pages/Servers/Metrics/Widgets/MetricDetails.php +++ b/app/Web/Pages/Servers/Metrics/Widgets/MetricDetails.php @@ -31,7 +31,7 @@ class MetricDetails extends Widget implements HasForms, HasInfolists public function infolist(Infolist $infolist): Infolist { return $infolist - ->record($this->server->metrics()->latest()->first()) + ->record($this->server->metrics()->latest()->first() ?? new Metric) ->schema([ Grid::make() ->schema([ diff --git a/app/Web/Pages/Servers/Metrics/Widgets/Metrics.php b/app/Web/Pages/Servers/Metrics/Widgets/Metrics.php index ab5505a..cbbe8ac 100644 --- a/app/Web/Pages/Servers/Metrics/Widgets/Metrics.php +++ b/app/Web/Pages/Servers/Metrics/Widgets/Metrics.php @@ -37,10 +37,10 @@ protected function getStats(): array Stat::make('CPU Load', $lastMetric?->load ?? 0) ->color('success') ->chart($metrics->pluck('load')->toArray()), - Stat::make('Memory Usage', Number::fileSize($lastMetric->memory_used_in_bytes, 2)) + Stat::make('Memory Usage', Number::fileSize($lastMetric?->memory_used_in_bytes || 0, 2)) ->color('warning') ->chart($metrics->pluck('memory_used')->toArray()), - Stat::make('Disk Usage', Number::fileSize($lastMetric->disk_used_in_bytes, 2)) + Stat::make('Disk Usage', Number::fileSize($lastMetric?->disk_used_in_bytes || 0, 2)) ->color('primary') ->chart($metrics->pluck('disk_used')->toArray()), ]; diff --git a/tests/Feature/DatabaseBackupTest.php b/tests/Feature/DatabaseBackupTest.php index 5843363..8d0dd8d 100644 --- a/tests/Feature/DatabaseBackupTest.php +++ b/tests/Feature/DatabaseBackupTest.php @@ -9,9 +9,13 @@ use App\Models\Backup; use App\Models\Database; use App\Models\StorageProvider; +use App\Web\Pages\Servers\Databases\Backups; +use App\Web\Pages\Servers\Databases\Widgets\BackupFilesList; +use App\Web\Pages\Servers\Databases\Widgets\BackupsList; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Bus; use Illuminate\Support\Facades\Http; +use Livewire\Livewire; use Tests\TestCase; class DatabaseBackupTest extends TestCase @@ -34,12 +38,14 @@ public function test_create_backup(): void 'provider' => \App\Enums\StorageProvider::DROPBOX, ]); - $this->post(route('servers.databases.backups.store', $this->server), [ - 'backup_database' => $database->id, - 'backup_storage' => $storage->id, - 'backup_interval' => '0 * * * *', - 'backup_keep' => '10', - ])->assertSessionDoesntHaveErrors(); + Livewire::test(Backups::class, ['server' => $this->server]) + ->callAction('create', [ + 'database' => $database->id, + 'storage' => $storage->id, + 'interval' => '0 * * * *', + 'keep' => '10', + ]) + ->assertSuccessful(); $this->assertDatabaseHas('backups', [ 'status' => BackupStatus::RUNNING, @@ -65,13 +71,15 @@ public function test_create_custom_interval_backup(): void 'provider' => \App\Enums\StorageProvider::DROPBOX, ]); - $this->post(route('servers.databases.backups.store', $this->server), [ - 'backup_database' => $database->id, - 'backup_storage' => $storage->id, - 'backup_interval' => 'custom', - 'backup_custom' => '* * * * *', - 'backup_keep' => '10', - ])->assertSessionDoesntHaveErrors(); + Livewire::test(Backups::class, ['server' => $this->server]) + ->callAction('create', [ + 'database' => $database->id, + 'storage' => $storage->id, + 'interval' => 'custom', + 'custom_interval' => '* * * * *', + 'keep' => '10', + ]) + ->assertSuccessful(); $this->assertDatabaseHas('backups', [ 'status' => BackupStatus::RUNNING, @@ -97,7 +105,12 @@ public function test_see_backups_list(): void 'storage_id' => $storage->id, ]); - $this->get(route('servers.databases.backups', [$this->server, $backup])) + $this->get( + Backups::getUrl([ + 'server' => $this->server, + 'backup' => $backup, + ]) + ) ->assertSuccessful() ->assertSee($backup->database->name); } @@ -121,8 +134,11 @@ public function test_delete_backup(): void 'storage_id' => $storage->id, ]); - $this->delete(route('servers.databases.backups.destroy', [$this->server, $backup])) - ->assertSessionDoesntHaveErrors(); + Livewire::test(BackupsList::class, [ + 'server' => $this->server, + ]) + ->callTableAction('delete', $backup->id) + ->assertSuccessful(); $this->assertDatabaseMissing('backups', [ 'id' => $backup->id, @@ -153,14 +169,14 @@ public function test_restore_backup(): void $backupFile = app(RunBackup::class)->run($backup); - $this->post(route('servers.databases.backups.files.restore', [ + Livewire::test(BackupFilesList::class, [ 'server' => $this->server, 'backup' => $backup, - 'backupFile' => $backupFile, - ]), [ - 'database' => $database->id, ]) - ->assertSessionDoesntHaveErrors(); + ->callTableAction('restore', $backupFile->id, [ + 'database' => $database->id, + ]) + ->assertSuccessful(); $this->assertDatabaseHas('backup_files', [ 'id' => $backupFile->id,