update([ 'rbac_status' => null, 'rbac_last_checked_at' => null, ]); $backupSet = BackupSet::factory()->create(['tenant_id' => $tenant->id]); $restoreRun = RestoreRun::factory()->create([ 'tenant_id' => $tenant->id, 'backup_set_id' => $backupSet->id, 'status' => 'completed', ]); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::test(ListRestoreRuns::class) ->assertTableActionDisabled('rerun', $restoreRun); }); test('rerun action is enabled when rbac_status is ok and fresh', function () { [$user, $tenant] = createUserWithTenant(role: 'owner'); $tenant->update([ 'rbac_status' => 'ok', 'rbac_last_checked_at' => now()->subMinutes(30), ]); $backupSet = BackupSet::factory()->create(['tenant_id' => $tenant->id]); $restoreRun = RestoreRun::factory()->create([ 'tenant_id' => $tenant->id, 'backup_set_id' => $backupSet->id, 'status' => 'completed', ]); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::test(ListRestoreRuns::class) ->assertTableActionEnabled('rerun', $restoreRun); }); test('rerun action tooltip contains reason when blocked', function () { [$user, $tenant] = createUserWithTenant(role: 'owner'); $tenant->update([ 'rbac_status' => 'not_configured', 'rbac_last_checked_at' => null, ]); $backupSet = BackupSet::factory()->create(['tenant_id' => $tenant->id]); $restoreRun = RestoreRun::factory()->create([ 'tenant_id' => $tenant->id, 'backup_set_id' => $backupSet->id, 'status' => 'completed', ]); $this->actingAs($user); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::test(ListRestoreRuns::class) ->assertTableActionExists( 'rerun', fn ($action): bool => str_contains((string) $action->getTooltip(), 'not configured'), $restoreRun ); });