fix(ops-ux): treat restore previews as completed

This commit is contained in:
Ahmed Darrazi 2026-01-19 19:43:11 +01:00
parent c352bc9a17
commit cb3da561ef
3 changed files with 22 additions and 14 deletions

View File

@ -75,7 +75,7 @@ public function handle(RestoreRun $restoreRun): void
protected function mapStatus(RestoreRunStatus $status): array
{
return match ($status) {
RestoreRunStatus::Previewed => ['queued', 'pending', []],
RestoreRunStatus::Previewed => ['completed', 'succeeded', []],
RestoreRunStatus::Pending => ['queued', 'pending', []],
RestoreRunStatus::Queued => ['queued', 'pending', []],
RestoreRunStatus::Running => ['running', 'pending', []],

View File

@ -197,6 +197,7 @@ private function isTerminalRestoreStatus(?RestoreRunStatus $status): bool
}
return in_array($status, [
RestoreRunStatus::Previewed,
RestoreRunStatus::Completed,
RestoreRunStatus::Partial,
RestoreRunStatus::Failed,
@ -214,6 +215,7 @@ private function mapRestoreToOperationRun(RestoreRun $restoreRun, RestoreRunStat
$failureReason = is_string($restoreRun->failure_reason ?? null) ? (string) $restoreRun->failure_reason : '';
return match ($status) {
RestoreRunStatus::Previewed => [OperationRunStatus::Completed->value, OperationRunOutcome::Succeeded->value, []],
RestoreRunStatus::Completed => [OperationRunStatus::Completed->value, OperationRunOutcome::Succeeded->value, []],
RestoreRunStatus::Partial, RestoreRunStatus::CompletedWithErrors => [
OperationRunStatus::Completed->value,

View File

@ -23,8 +23,8 @@
->first();
expect($opRun)->not->toBeNull();
expect($opRun?->status)->toBe('queued');
expect($opRun?->outcome)->toBe('pending');
expect($opRun?->status)->toBe('completed');
expect($opRun?->outcome)->toBe('succeeded');
expect($opRun?->context)->toMatchArray([
'restore_run_id' => (int) $restoreRun->getKey(),
'backup_set_id' => (int) $restoreRun->backup_set_id,
@ -34,7 +34,13 @@
it('updates the operation run when restore completes', function () {
$restoreRun = RestoreRun::factory()->create([
'status' => RestoreRunStatus::Previewed->value,
'status' => RestoreRunStatus::Queued->value,
'metadata' => [
'total' => 3,
'succeeded' => 1,
'failed' => 1,
'skipped' => 1,
],
]);
$opRun = OperationRun::query()
@ -48,12 +54,11 @@
$restoreRun->update([
'status' => RestoreRunStatus::Completed->value,
'results' => [
'assignment_outcomes' => [
['status' => 'success'],
['status' => 'failed'],
['status' => 'skipped'],
],
'metadata' => [
'total' => 3,
'succeeded' => 1,
'failed' => 1,
'skipped' => 1,
],
]);
@ -62,16 +67,17 @@
expect($opRun->status)->toBe('completed');
expect($opRun->outcome)->toBe('succeeded');
expect($opRun->summary_counts)->toMatchArray([
'assignments_success' => 1,
'assignments_failed' => 1,
'assignments_skipped' => 1,
'total' => 3,
'succeeded' => 1,
'failed' => 1,
'skipped' => 1,
]);
expect($opRun->completed_at)->not->toBeNull();
});
it('maps cancelled restore runs to failed outcome (cancelled is reserved)', function () {
$restoreRun = RestoreRun::factory()->create([
'status' => RestoreRunStatus::Previewed->value,
'status' => RestoreRunStatus::Queued->value,
]);
$opRun = OperationRun::query()