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:
@@ -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
|
||||||
|
|||||||
@@ -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]);
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user