diff --git a/src/States/WorkflowStatus.php b/src/States/WorkflowStatus.php index 047d05c0..7ac117fb 100644 --- a/src/States/WorkflowStatus.php +++ b/src/States/WorkflowStatus.php @@ -14,7 +14,6 @@ public static function config(): StateConfig return parent::config() ->default(WorkflowCreatedStatus::class) ->allowTransition(WorkflowCreatedStatus::class, WorkflowPendingStatus::class) - ->allowTransition(WorkflowFailedStatus::class, WorkflowPendingStatus::class) ->allowTransition(WorkflowPendingStatus::class, WorkflowFailedStatus::class) ->allowTransition(WorkflowPendingStatus::class, WorkflowRunningStatus::class) ->allowTransition(WorkflowRunningStatus::class, WorkflowCompletedStatus::class) diff --git a/tests/Feature/FailingWorkflowTest.php b/tests/Feature/FailingWorkflowTest.php index 4e6776c8..f2aa0ffa 100644 --- a/tests/Feature/FailingWorkflowTest.php +++ b/tests/Feature/FailingWorkflowTest.php @@ -6,7 +6,9 @@ use Tests\Fixtures\TestFailingWorkflow; use Tests\TestCase; +use Workflow\Models\StoredWorkflow; use Workflow\States\WorkflowCompletedStatus; +use Workflow\States\WorkflowCreatedStatus; use Workflow\States\WorkflowFailedStatus; use Workflow\WorkflowStub; @@ -23,6 +25,10 @@ public function testRetry(): void $this->assertSame(WorkflowFailedStatus::class, $workflow->status()); $this->assertNull($workflow->output()); + $storedWorkflow = StoredWorkflow::findOrFail($workflow->id()); + $storedWorkflow->status = WorkflowCreatedStatus::class; + $storedWorkflow->save(); + $workflow->fresh() ->start(shouldFail: false); diff --git a/tests/Feature/ParentWorkflowTest.php b/tests/Feature/ParentWorkflowTest.php index 7421b18f..6ac7b765 100644 --- a/tests/Feature/ParentWorkflowTest.php +++ b/tests/Feature/ParentWorkflowTest.php @@ -14,7 +14,9 @@ use Tests\Fixtures\TestParentWorkflow; use Tests\TestCase; use Workflow\AsyncWorkflow; +use Workflow\Models\StoredWorkflow; use Workflow\States\WorkflowCompletedStatus; +use Workflow\States\WorkflowCreatedStatus; use Workflow\States\WorkflowFailedStatus; use Workflow\WorkflowStub; @@ -48,6 +50,14 @@ public function testRetry(): void $this->assertSame(WorkflowFailedStatus::class, $workflow->status()); $this->assertNull($workflow->output()); + $storedWorkflow = StoredWorkflow::findOrFail($workflow->id()); + $storedWorkflow->status = WorkflowCreatedStatus::class; + $storedWorkflow->save(); + + $storedChildWorkflow = StoredWorkflow::findOrFail($workflow->id() + 1); + $storedChildWorkflow->status = WorkflowCreatedStatus::class; + $storedChildWorkflow->save(); + $workflow->fresh() ->start(shouldThrow: false); diff --git a/tests/Unit/WorkflowStubTest.php b/tests/Unit/WorkflowStubTest.php index c6680f5e..ef91ec01 100644 --- a/tests/Unit/WorkflowStubTest.php +++ b/tests/Unit/WorkflowStubTest.php @@ -57,6 +57,10 @@ public function testMake(): void $this->assertTrue($workflow->failed()); $this->assertTrue($parentWorkflow->failed()); + $storedWorkflow = StoredWorkflow::findOrFail($workflow->id()); + $storedWorkflow->status = WorkflowCreatedStatus::class; + $storedWorkflow->save(); + $workflow->cancel(); while (! $workflow->isCanceled()); @@ -78,6 +82,10 @@ public function testComplete(): void $workflow->cancel(); $workflow->fail(new Exception('resume')); + $storedWorkflow = StoredWorkflow::findOrFail($workflow->id()); + $storedWorkflow->status = WorkflowCreatedStatus::class; + $storedWorkflow->save(); + Cache::flush(); $workflow->resume();