fix: improve errors_only filter and add view page test

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ovidiu U
2026-04-04 14:14:35 +01:00
parent a8fb275793
commit 9998a3e1c8
2 changed files with 21 additions and 2 deletions

View File

@@ -79,6 +79,7 @@ class ApiLogResource extends Resource
->label('Errors only') ->label('Errors only')
->query(fn (Builder $query) => $query->where( ->query(fn (Builder $query) => $query->where(
fn (Builder $q) => $q->where('status_code', '>=', 400) fn (Builder $q) => $q->where('status_code', '>=', 400)
->orWhereNull('status_code')
->orWhereNotNull('error') ->orWhereNotNull('error')
)), )),
Filter::make('created_at') Filter::make('created_at')
@@ -94,8 +95,7 @@ class ApiLogResource extends Resource
]) ])
->recordActions([ ->recordActions([
ViewAction::make(), ViewAction::make(),
]) ]);
->toolbarActions([]);
} }
public static function infolist(Schema $schema): Schema public static function infolist(Schema $schema): Schema

View File

@@ -1,6 +1,7 @@
<?php <?php
use App\Filament\Resources\ApiLogResource\Pages\ListApiLogs; use App\Filament\Resources\ApiLogResource\Pages\ListApiLogs;
use App\Filament\Resources\ApiLogResource\Pages\ViewApiLog;
use App\Models\ApiLog; use App\Models\ApiLog;
use App\Models\User; use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\RefreshDatabase;
@@ -30,3 +31,21 @@ it('filters to errors only', function () {
->assertCanSeeTableRecords([$err]) ->assertCanSeeTableRecords([$err])
->assertCanNotSeeTableRecords([$ok]); ->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]);
});