create(['name' => 'Workspace A']); $user = User::factory()->create(); WorkspaceMembership::factory()->create([ 'workspace_id' => $workspace->getKey(), 'user_id' => $user->getKey(), 'role' => 'owner', ]); $tenant = Tenant::factory()->active()->create([ 'workspace_id' => $workspace->getKey(), 'name' => 'Active Card Tenant', ]); $user->tenants()->syncWithoutDetaching([ $tenant->getKey() => ['role' => 'owner'], ]); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $workspace->getKey()]) ->get('/admin/choose-tenant') ->assertSuccessful() ->assertSee('Active Card Tenant') ->assertSee('Active') ->assertSee('Active tenant available for normal operations.'); }); it('labels the onboarding linked tenant action with the canonical lifecycle name', function (): void { $workspace = Workspace::factory()->create(); $tenant = Tenant::factory()->onboarding()->create([ 'workspace_id' => (int) $workspace->getKey(), 'name' => 'Onboarding Linked Tenant', ]); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner', ensureDefaultMicrosoftProviderConnection: false); session()->put(WorkspaceContext::SESSION_KEY, (int) $workspace->getKey()); $draft = createOnboardingDraft([ 'workspace' => $workspace, 'tenant' => $tenant, 'started_by' => $user, 'updated_by' => $user, 'state' => [ 'entra_tenant_id' => (string) $tenant->tenant_id, 'tenant_name' => (string) $tenant->name, ], ]); Livewire::actingAs($user) ->test(ManagedTenantOnboardingWizard::class, [ 'onboardingDraft' => (int) $draft->getKey(), ]) ->assertActionHasLabel('view_linked_tenant', 'View tenant (Onboarding)'); });