active()->create([ 'workspace_id' => (int) $tenant->workspace_id, ]); Livewire::actingAs($user) ->test(ListBaselineProfiles::class) ->assertTableActionExists('archive', fn (Action $action): bool => $action->isConfirmationRequired(), $profile); }); it('disables archive for workspace members missing workspace_baselines.manage', function (): void { [$user, $tenant] = createUserWithTenant(role: 'readonly'); $profile = BaselineProfile::factory()->active()->create([ 'workspace_id' => (int) $tenant->workspace_id, ]); Livewire::actingAs($user) ->test(ListBaselineProfiles::class) ->assertTableActionVisible('archive', $profile) ->assertTableActionDisabled('archive', $profile) ->assertTableActionExists('archive', fn (Action $action): bool => $action->getTooltip() === UiTooltips::insufficientPermission(), $profile) ->callTableAction('archive', $profile); $profile->refresh(); expect($profile->status)->toBe(BaselineProfileStatus::Active); }); it('archives baseline profiles for authorized workspace members', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $profile = BaselineProfile::factory()->active()->create([ 'workspace_id' => (int) $tenant->workspace_id, ]); Livewire::actingAs($user) ->test(ListBaselineProfiles::class) ->assertTableActionVisible('archive', $profile) ->assertTableActionEnabled('archive', $profile) ->callTableAction('archive', $profile) ->assertHasNoTableActionErrors() ->assertTableActionHidden('archive', $profile->fresh()); $profile->refresh(); expect($profile->status)->toBe(BaselineProfileStatus::Archived); }); it('does not show workspace-owned baseline profiles from other workspaces in the list', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $otherWorkspace = Workspace::factory()->create(); $profile = BaselineProfile::factory()->active()->create([ 'workspace_id' => (int) $otherWorkspace->getKey(), ]); Livewire::actingAs($user) ->test(ListBaselineProfiles::class) ->assertCanNotSeeTableRecords([$profile]); });