diff --git a/app/Filament/Resources/ApiLogResource.php b/app/Filament/Resources/ApiLogResource.php index 33f5394..01f6fe4 100644 --- a/app/Filament/Resources/ApiLogResource.php +++ b/app/Filament/Resources/ApiLogResource.php @@ -79,6 +79,7 @@ class ApiLogResource extends Resource ->label('Errors only') ->query(fn (Builder $query) => $query->where( fn (Builder $q) => $q->where('status_code', '>=', 400) + ->orWhereNull('status_code') ->orWhereNotNull('error') )), Filter::make('created_at') @@ -94,8 +95,7 @@ class ApiLogResource extends Resource ]) ->recordActions([ ViewAction::make(), - ]) - ->toolbarActions([]); + ]); } public static function infolist(Schema $schema): Schema diff --git a/tests/Feature/Admin/ApiLogResourceTest.php b/tests/Feature/Admin/ApiLogResourceTest.php index 4035f80..50da82d 100644 --- a/tests/Feature/Admin/ApiLogResourceTest.php +++ b/tests/Feature/Admin/ApiLogResourceTest.php @@ -1,6 +1,7 @@ assertCanSeeTableRecords([$err]) ->assertCanNotSeeTableRecords([$ok]); }); + +it('renders the view page for a log', function () { + $log = ApiLog::factory()->create(); + + Livewire::test(ViewApiLog::class, ['record' => $log->id]) + ->assertOk(); +}); + +it('filters to errors only including null status codes', function () { + $ok = ApiLog::factory()->create(['status_code' => 200, 'error' => null]); + $err4xx = ApiLog::factory()->failed()->create(['status_code' => 429, 'error' => 'Too many requests']); + $errNull = ApiLog::factory()->create(['status_code' => null, 'error' => 'Connection timeout']); + + Livewire::test(ListApiLogs::class) + ->filterTable('errors_only') + ->assertCanSeeTableRecords([$err4xx, $errNull]) + ->assertCanNotSeeTableRecords([$ok]); +});