map(fn ($result): string => (string) $result->title)->all(); } it('keeps tenant global-search aligned with administrative discoverability in the current workspace', function (): void { $active = Tenant::factory()->active()->create(['name' => 'Lifecycle Active']); [$user, $active] = createUserWithTenant(tenant: $active, role: 'owner'); $onboarding = Tenant::factory()->onboarding()->create([ 'workspace_id' => (int) $active->workspace_id, 'name' => 'Lifecycle Onboarding', ]); $draft = Tenant::factory()->draft()->create([ 'workspace_id' => (int) $active->workspace_id, 'name' => 'Lifecycle Draft', ]); $archived = Tenant::factory()->archived()->create([ 'workspace_id' => (int) $active->workspace_id, 'name' => 'Lifecycle Archived', ]); createUserWithTenant(tenant: $onboarding, user: $user, role: 'owner'); createUserWithTenant(tenant: $draft, user: $user, role: 'owner'); createUserWithTenant(tenant: $archived, user: $user, role: 'owner'); $this->actingAs($user); Filament::setCurrentPanel('admin'); Filament::setTenant(null, true); Filament::bootCurrentPanel(); session()->put(WorkspaceContext::SESSION_KEY, (int) $active->workspace_id); $results = TenantResource::getGlobalSearchResults('Lifecycle'); expect(tenantSearchTitles($results))->toEqualCanonicalizing([ 'Lifecycle Active', 'Lifecycle Onboarding', 'Lifecycle Draft', 'Lifecycle Archived', ]); expect($results->first()?->url) ->not->toBeNull(); }); it('keeps first-slice taxonomy resources out of global search', function (): void { expect(OperationRunResource::canGloballySearch())->toBeFalse() ->and(EvidenceSnapshotResource::canGloballySearch())->toBeFalse() ->and(BaselineSnapshotResource::canGloballySearch())->toBeFalse() ->and(TenantReviewResource::canGloballySearch())->toBeFalse(); });