create(); $backupSet = BackupSet::factory()->create([ 'tenant_id' => $tenant->getKey(), ]); $restoreRun = RestoreRun::factory()->create([ 'tenant_id' => $tenant->getKey(), 'backup_set_id' => $backupSet->getKey(), 'status' => 'completed', 'is_dry_run' => false, 'metadata' => [ 'total' => 10, 'succeeded' => 8, 'failed' => 1, 'skipped' => 1, ], // Intentionally malformed outcomes to ensure sync never explodes. 'results' => [ 'items' => [ '123' => [ 'assignment_outcomes' => ['not-an-array'], ], ], ], ]); app(SyncRestoreRunToOperationRun::class)->handle($restoreRun); $opRun = OperationRun::query() ->where('tenant_id', $tenant->getKey()) ->where('type', 'restore.execute') ->where('context->restore_run_id', $restoreRun->getKey()) ->first(); expect($opRun)->not->toBeNull(); expect($opRun?->status)->toBe('completed'); expect($opRun?->outcome)->toBe('succeeded'); expect($opRun?->summary_counts['total'] ?? null)->toBe(10); expect($opRun?->summary_counts['succeeded'] ?? null)->toBe(8); expect($opRun?->summary_counts['failed'] ?? null)->toBe(1); expect($opRun?->summary_counts['skipped'] ?? null)->toBe(1); expect($opRun?->completed_at)->not->toBeNull(); })->group('ops-ux');