create(); $backupSet = BackupSet::factory()->for($tenant)->create([ 'status' => 'completed', 'item_count' => 1, ]); $backupItem = BackupItem::factory() ->for($tenant) ->for($backupSet) ->state([ 'policy_id' => null, 'policy_identifier' => 'policy-1', 'policy_type' => 'deviceConfiguration', 'platform' => 'windows', 'payload' => [ 'id' => 'policy-1', '@odata.type' => '#microsoft.graph.windows10CustomConfiguration', ], ]) ->create(); $run = RestoreRun::create([ 'tenant_id' => $tenant->id, 'backup_set_id' => $backupSet->id, 'status' => 'failed', 'is_dry_run' => true, 'requested_items' => [$backupItem->id], 'group_mapping' => [ 'source-group-1' => 'target-group-1', ], ]); $user = User::factory()->create(['email' => 'tester@example.com']); $user->tenants()->syncWithoutDetaching([ $tenant->getKey() => ['role' => 'owner'], ]); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(ListRestoreRuns::class) ->callTableAction('rerun', $run); $newRun = RestoreRun::query() ->where('backup_set_id', $backupSet->id) ->orderByDesc('id') ->first(); expect($newRun)->not->toBeNull(); expect($newRun->id)->not->toBe($run->id); expect($newRun->requested_items)->toBe([$backupItem->id]); expect($newRun->group_mapping)->toBe([ 'source-group-1' => 'target-group-1', ]); expect($newRun->is_dry_run)->toBeTrue(); expect($newRun->requested_by)->toBe('tester@example.com'); }); test('rerun action is hidden for archived restore runs', function () { $tenant = Tenant::factory()->create(); $backupSet = BackupSet::factory()->for($tenant)->create([ 'status' => 'completed', 'item_count' => 0, ]); $run = RestoreRun::create([ 'tenant_id' => $tenant->id, 'backup_set_id' => $backupSet->id, 'status' => 'completed', 'is_dry_run' => true, 'requested_by' => 'tester@example.com', ]); $run->delete(); $user = User::factory()->create(); $user->tenants()->syncWithoutDetaching([ $tenant->getKey() => ['role' => 'owner'], ]); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(ListRestoreRuns::class) ->filterTable(TrashedFilter::class, false) ->assertTableActionHidden('rerun', $run); });