create(); Policy::create([ 'tenant_id' => $tenant->id, 'external_id' => 'policy-1', 'policy_type' => 'deviceConfiguration', 'display_name' => 'Policy A', 'platform' => 'windows', 'last_synced_at' => now(), ]); $otherTenant = Tenant::factory()->create(); Policy::create([ 'tenant_id' => $otherTenant->id, 'external_id' => 'policy-2', 'policy_type' => 'deviceConfiguration', 'display_name' => 'Policy B', 'platform' => 'windows', 'last_synced_at' => now(), ]); $user = User::factory()->create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, user: $user, role: 'owner'); $user->tenants()->syncWithoutDetaching([ $otherTenant->getKey() => ['role' => 'owner'], ]); $this->actingAs($user) ->get(route('filament.tenant.resources.policies.index', filamentTenantRouteParams($tenant))) ->assertOk() ->assertSee('Policy A') ->assertDontSee('Policy B'); }); test('policy list keeps the standard table defaults and persists state in-session', function () { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); $component = Livewire::actingAs($user) ->test(ListPolicies::class) ->assertTableEmptyStateActionsExistInOrder(['sync']) ->searchTable('Policy') ->call('sortTable', 'display_name', 'desc') ->set('tableFilters.visibility.value', 'active'); $table = $component->instance()->getTable(); expect($table->getPaginationPageOptions())->toBe(\App\Support\Filament\TablePaginationProfiles::resource()); expect($table->getEmptyStateHeading())->toBe('No policies synced yet'); expect($table->getColumn('display_name')?->isSearchable())->toBeTrue(); expect($table->getColumn('display_name')?->isSortable())->toBeTrue(); expect($table->getColumn('external_id')?->isToggledHiddenByDefault())->toBeTrue(); expect(count($table->getVisibleColumns()))->toBeLessThanOrEqual(7); expect(session()->get($component->instance()->getTableSearchSessionKey()))->toBe('Policy'); expect(session()->get($component->instance()->getTableSortSessionKey()))->toBe('display_name:desc'); Livewire::actingAs($user) ->test(ListPolicies::class) ->assertSet('tableSearch', 'Policy') ->assertSet('tableSort', 'display_name:desc') ->assertSet('tableFilters.visibility.value', 'active'); });