diff --git a/app/Listeners/SyncRestoreRunToOperationRun.php b/app/Listeners/SyncRestoreRunToOperationRun.php index dab97d6..5ddd78e 100644 --- a/app/Listeners/SyncRestoreRunToOperationRun.php +++ b/app/Listeners/SyncRestoreRunToOperationRun.php @@ -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', []], diff --git a/app/Services/AdapterRunReconciler.php b/app/Services/AdapterRunReconciler.php index 76c6509..70cae60 100644 --- a/app/Services/AdapterRunReconciler.php +++ b/app/Services/AdapterRunReconciler.php @@ -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, diff --git a/tests/Feature/RestoreAdapterTest.php b/tests/Feature/RestoreAdapterTest.php index 5fa645f..0863774 100644 --- a/tests/Feature/RestoreAdapterTest.php +++ b/tests/Feature/RestoreAdapterTest.php @@ -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()