$parameters */ function spec125AssertPersistedTableState( string $componentClass, array $parameters, string $search, string $sortColumn, string $sortDirection, string $filterPath, mixed $filterValue, ): void { $component = Livewire::test($componentClass, $parameters) ->searchTable($search) ->call('sortTable', $sortColumn, $sortDirection) ->set($filterPath, $filterValue); $instance = $component->instance(); expect(session()->get($instance->getTableSearchSessionKey()))->toBe($search); expect(session()->get($instance->getTableSortSessionKey()))->toBe("{$sortColumn}:{$sortDirection}"); expect(data_get(session()->get($instance->getTableFiltersSessionKey()), str($filterPath)->after('tableFilters.')->value()))->toBe($filterValue); Livewire::test($componentClass, $parameters) ->assertSet('tableSearch', $search) ->assertSet('tableSort', "{$sortColumn}:{$sortDirection}") ->assertSet($filterPath, $filterValue); } it('persists tenant list search, sort, and filter state across remounts', function (): void { [$user] = createUserWithTenant(role: 'owner'); $this->actingAs($user); Filament::setTenant(null, true); spec125AssertPersistedTableState( ListTenants::class, [], 'Tenant', 'name', 'desc', 'tableFilters.environment.value', 'prod', ); }); it('persists policy list search, sort, and filter state across remounts', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); spec125AssertPersistedTableState( ListPolicies::class, [], 'Policy', 'display_name', 'desc', 'tableFilters.visibility.value', 'active', ); }); it('persists backup-set list search, sort, and filter state across remounts', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); spec125AssertPersistedTableState( ListBackupSets::class, [], 'Backup', 'name', 'desc', 'tableFilters.trashed.value', 1, ); }); it('persists backup-schedule list search, sort, and filter state across remounts', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); spec125AssertPersistedTableState( ListBackupSchedules::class, [], 'Schedule', 'name', 'desc', 'tableFilters.enabled_state.value', 'enabled', ); }); it('persists provider-connections list search, sort, and filter state across remounts', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); spec125AssertPersistedTableState( ListProviderConnections::class, [], 'Contoso', 'display_name', 'desc', 'tableFilters.default_only.isActive', true, ); }); it('persists findings list search, sort, and filter state across remounts', function (): void { [$user, $tenant] = createUserWithTenant(role: 'manager'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); spec125AssertPersistedTableState( ListFindings::class, [], 'drift', 'created_at', 'asc', 'tableFilters.status.value', 'new', ); }); it('persists monitoring operations search, sort, and filter state across remounts', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); Filament::setTenant($tenant, true); spec125AssertPersistedTableState( Operations::class, [], 'policy', 'type', 'desc', 'tableFilters.status.value', 'queued', ); });