active()->create(['name' => 'Choose Active Tenant']); [$user, $activeTenant] = createUserWithTenant(tenant: $activeTenant, role: 'owner'); $otherActiveTenant = Tenant::factory()->active()->create([ 'workspace_id' => (int) $activeTenant->workspace_id, 'name' => 'Choose Other Active Tenant', ]); $onboardingTenant = Tenant::factory()->onboarding()->create([ 'workspace_id' => (int) $activeTenant->workspace_id, 'name' => 'Choose Onboarding Tenant', ]); $archivedTenant = Tenant::factory()->archived()->create([ 'workspace_id' => (int) $activeTenant->workspace_id, 'name' => 'Choose Archived Tenant', ]); createUserWithTenant(tenant: $otherActiveTenant, user: $user, role: 'owner'); createUserWithTenant(tenant: $onboardingTenant, user: $user, role: 'owner', ensureDefaultMicrosoftProviderConnection: false); createUserWithTenant(tenant: $archivedTenant, user: $user, role: 'owner', ensureDefaultMicrosoftProviderConnection: false); Filament::setTenant(null, true); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $activeTenant->workspace_id]) ->get('/admin/choose-tenant') ->assertSuccessful() ->assertSee('Choose Active Tenant') ->assertSee('Choose Other Active Tenant') ->assertDontSee('Choose Onboarding Tenant') ->assertDontSee('Choose Archived Tenant') ->assertSee('Select the tenant for your normal active operating context.') ->assertSee('No tenant selected is still a valid workspace state'); }); it('shows a workspace-safe empty state when no selectable tenants remain', function (): void { $onboardingTenant = Tenant::factory()->onboarding()->create(['name' => 'Only Onboarding Tenant']); [$user, $onboardingTenant] = createUserWithTenant( tenant: $onboardingTenant, role: 'owner', ensureDefaultMicrosoftProviderConnection: false, ); Filament::setTenant(null, true); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $onboardingTenant->workspace_id]) ->get('/admin/choose-tenant') ->assertSuccessful() ->assertSee('No active tenants available') ->assertSee('Workspace-level pages still work with no tenant selected') ->assertSee('View managed tenants'); }); it('redirects clear selected tenant from tenant-bound pages back to a workspace-safe managed-tenants page', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); Filament::setTenant($tenant, true); $this->actingAs($user) ->withSession([ WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id, WorkspaceContext::LAST_TENANT_IDS_SESSION_KEY => [ (string) $tenant->workspace_id => (int) $tenant->getKey(), ], ]) ->from("/admin/tenants/{$tenant->external_id}") ->post(route('admin.clear-tenant-context')) ->assertRedirect(route('admin.workspace.managed-tenants.index', ['workspace' => $tenant->workspace])); $this->withSession([ WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id, ])->get(route('admin.operations.index')) ->assertSuccessful() ->assertSee('All tenants'); });