create(); [$user] = createUserWithTenant(tenant: $tenant, role: 'manager'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::test(EditTenant::class, ['record' => $tenant->getRouteKey()]) ->assertActionVisible('archive') ->assertActionDisabled('archive') ->assertActionExists('archive', function (Action $action): bool { return $action->getLabel() === 'Archive' && $action->isConfirmationRequired() && $action->getTooltip() === 'You do not have permission to archive tenants.'; }) ->mountAction('archive') ->callMountedAction() ->assertSuccessful(); $tenant->refresh(); expect($tenant->trashed())->toBeFalse(); }); it('allows owner members to archive tenant', function () { $tenant = Tenant::factory()->create(); [$user] = createUserWithTenant(tenant: $tenant, role: 'owner'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::test(EditTenant::class, ['record' => $tenant->getRouteKey()]) ->assertActionVisible('archive') ->assertActionEnabled('archive') ->assertActionExists('archive', fn (Action $action): bool => $action->getLabel() === 'Archive' && $action->isConfirmationRequired()) ->mountAction('archive') ->callMountedAction() ->assertHasNoActionErrors(); $tenant->refresh(); expect($tenant->trashed())->toBeTrue(); }); it('hides the archive action once the tenant is already archived', function () { $tenant = Tenant::factory()->archived()->create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner', ensureDefaultMicrosoftProviderConnection: false); $this->actingAs($user); Filament::setTenant($tenant, true); Livewire::test(EditTenant::class, ['record' => $tenant->getRouteKey()]) ->assertActionHidden('archive'); }); });