active()->create(['name' => 'Lifecycle Audit Tenant']); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); $this->actingAs($user); Filament::setTenant($tenant, true); Livewire::test(ViewTenant::class, ['record' => $tenant->getRouteKey()]) ->assertActionExists('archive', function (Action $action): bool { return $action->getLabel() === 'Archive' && $action->isConfirmationRequired(); }) ->mountAction('archive') ->callMountedAction() ->assertHasNoActionErrors(); $tenant->refresh(); expect($tenant->trashed())->toBeTrue(); expect(AuditLog::query() ->where('workspace_id', (int) $tenant->workspace_id) ->where('tenant_id', (int) $tenant->getKey()) ->where('action', AuditActionId::TenantArchived->value) ->exists())->toBeTrue(); Filament::setTenant(null, true); Livewire::actingAs($user) ->test(ViewTenant::class, ['record' => $tenant->getRouteKey()]) ->assertActionExists('restore', function (Action $action): bool { return $action->getLabel() === 'Restore' && $action->isConfirmationRequired(); }) ->mountAction('restore') ->callMountedAction() ->assertHasNoActionErrors(); $tenant->refresh(); expect($tenant->trashed())->toBeFalse(); expect(AuditLog::query() ->where('workspace_id', (int) $tenant->workspace_id) ->where('tenant_id', (int) $tenant->getKey()) ->where('action', AuditActionId::TenantRestored->value) ->exists())->toBeTrue(); });