actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::test(ViewTenant::class, ['record' => $tenant->getRouteKey()]) ->assertActionVisible('edit') ->assertActionDisabled('edit') ->assertActionExists('edit', function (Action $action): bool { return $action->getTooltip() === UiTooltips::INSUFFICIENT_PERMISSION; }) ->assertActionVisible('archive') ->assertActionDisabled('archive') ->assertActionExists('archive', function (Action $action): bool { return $action->getTooltip() === UiTooltips::INSUFFICIENT_PERMISSION; }); }); it('shows edit and deactivate actions as enabled for owner members', function () { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::test(ViewTenant::class, ['record' => $tenant->getRouteKey()]) ->assertActionVisible('edit') ->assertActionEnabled('edit') ->assertActionVisible('archive') ->assertActionEnabled('archive'); }); it('does not execute the deactivate action for readonly members (silently blocked by Filament)', function () { [$user, $tenant] = createUserWithTenant(role: 'readonly'); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::test(ViewTenant::class, ['record' => $tenant->getRouteKey()]) ->assertActionDisabled('archive') ->mountAction('archive') ->callMountedAction() ->assertSuccessful(); expect(Tenant::withTrashed()->find($tenant->getKey())?->trashed())->toBeFalse(); }); });