Skip to content

Commit c7a323a

Browse files
committed
🚀 refactor(chain): enhance middleware registration with dynamic de-registration and initial state lifecycle management.
1 parent 0798c80 commit c7a323a

28 files changed

+342
-71
lines changed

‎tests/PHPUnit/Integration/Core/Region/QueuedEventBatchTest.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ public function testTransitionsWithQueuedEvents(): void
149149
$r->trigger((object)['step' => 0], false);
150150

151151
$this->assertTrue($r->isInState('three'));
152-
$this->assertEquals(['two', 'three'], $states);
152+
$this->assertEquals(['one','two', 'three'], $states);
153153
}
154154

155155
#[Test]

‎tests/PHPUnit/Integration/Feature/Transitions/FinalStateBoundaryTest.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function testRespectsFinalStateBoundary(): void
5151
$region->trigger((object)[]);
5252

5353
$this->assertTrue($region->isInState('final'));
54-
$this->assertEquals(0, $enterCount, 'Should not re-enter initial state from final');
54+
$this->assertEquals(1, $enterCount, 'Should not re-enter initial state from final');
5555
}
5656

5757
public function testWorkflowCompletionDetection(): void

‎tests/PHPUnit/Unit/Core/Region/ActionChainContextTest.php‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public function testActionChainReceivesActionContext(): void
2424
{
2525
$events = \Mockery::mock(Events::class);
2626
$actionChain = \Mockery::mock(DispatchAction::class);
27+
$actionChain->shouldReceive('link');
28+
2729
$transitionChain = \Mockery::mock(DoTransition::class);
2830
$pathChain = \Mockery::mock(Path::class);
2931

@@ -50,6 +52,8 @@ public function testActionContextContainsRegion(): void
5052
{
5153
$events = \Mockery::mock(Events::class);
5254
$actionChain = \Mockery::mock(DispatchAction::class);
55+
$actionChain->shouldReceive('link');
56+
5357
$transitionChain = \Mockery::mock(DoTransition::class);
5458
$pathChain = \Mockery::mock(Path::class);
5559

@@ -78,6 +82,8 @@ public function testActionContextContainsPayload(): void
7882
{
7983
$events = \Mockery::mock(Events::class);
8084
$actionChain = \Mockery::mock(DispatchAction::class);
85+
$actionChain->shouldReceive('link');
86+
8187
$transitionChain = \Mockery::mock(DoTransition::class);
8288
$pathChain = \Mockery::mock(Path::class);
8389

@@ -107,6 +113,8 @@ public function testActionContextHasCurrentState(): void
107113
{
108114
$events = \Mockery::mock(Events::class);
109115
$actionChain = \Mockery::mock(DispatchAction::class);
116+
$actionChain->shouldReceive('link');
117+
110118
$transitionChain = \Mockery::mock(DoTransition::class);
111119
$pathChain = \Mockery::mock(Path::class);
112120

‎tests/PHPUnit/Unit/Core/Region/ActionChainInvocationTest.php‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public function testActionChainIsCalledForEachEvent(): void
2424
{
2525
$events = \Mockery::mock(Events::class);
2626
$actionChain = \Mockery::mock(DispatchAction::class);
27+
$actionChain->shouldReceive('link');
28+
2729
$transitionChain = \Mockery::mock(DoTransition::class);
2830
$pathChain = \Mockery::mock(Path::class);
2931

@@ -52,6 +54,8 @@ public function testActionChainIsCalledOncePerDispatchedEvent(): void
5254
{
5355
$events = \Mockery::mock(Events::class);
5456
$actionChain = \Mockery::mock(DispatchAction::class);
57+
$actionChain->shouldReceive('link');
58+
5559
$transitionChain = \Mockery::mock(DoTransition::class);
5660
$pathChain = \Mockery::mock(Path::class);
5761

@@ -80,6 +84,8 @@ public function testActionChainNotCalledForEnqueuedEvents(): void
8084
{
8185
$events = \Mockery::mock(Events::class);
8286
$actionChain = \Mockery::mock(DispatchAction::class);
87+
$actionChain->shouldReceive('link');
88+
8389
$transitionChain = \Mockery::mock(DoTransition::class);
8490
$pathChain = \Mockery::mock(Path::class);
8591

‎tests/PHPUnit/Unit/Core/Region/ActionChainStateReturnTest.php‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public function testActionChainCanReturnSameState(): void
2424
{
2525
$events = \Mockery::mock(Events::class);
2626
$actionChain = \Mockery::mock(DispatchAction::class);
27+
$actionChain->shouldReceive('link');
28+
2729
$transitionChain = \Mockery::mock(DoTransition::class);
2830
$pathChain = \Mockery::mock(Path::class);
2931

@@ -51,6 +53,8 @@ public function testActionChainCanReturnDifferentState(): void
5153
{
5254
$events = \Mockery::mock(Events::class);
5355
$actionChain = \Mockery::mock(DispatchAction::class);
56+
$actionChain->shouldReceive('link');
57+
5458
$transitionChain = \Mockery::mock(DoTransition::class);
5559
$pathChain = \Mockery::mock(Path::class);
5660

@@ -79,6 +83,8 @@ public function testStateChangesWhenActionChainReturnsNewState(): void
7983
{
8084
$events = \Mockery::mock(Events::class);
8185
$actionChain = \Mockery::mock(DispatchAction::class);
86+
$actionChain->shouldReceive('link');
87+
8288
$transitionChain = \Mockery::mock(DoTransition::class);
8389
$pathChain = \Mockery::mock(Path::class);
8490

‎tests/PHPUnit/Unit/Core/Region/CurrentStateTrackingTest.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public function testCurrentStateReturnsCorrectState(): void
3939
public function testCurrentStateRemainsConsistent(): void
4040
{
4141
$region = $this->createRegion('myState', 'finalState');
42-
4342
$state1 = $region->currentState();
4443
$state2 = $region->currentState();
4544

@@ -50,6 +49,7 @@ private function createRegion(string $initial, string $final): Region
5049
{
5150
$events = \Mockery::mock(Events::class);
5251
$actionChain = \Mockery::mock(DispatchAction::class);
52+
$actionChain->shouldReceive('link');
5353
$transitionChain = \Mockery::mock(DoTransition::class);
5454
$pathChain = \Mockery::mock(Path::class);
5555

‎tests/PHPUnit/Unit/Core/Region/EnqueueEventsTest.php‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public function testTriggerWithEnqueueDoesNotDispatchImmediately(): void
2323
{
2424
$events = \Mockery::mock(Events::class);
2525
$actionChain = \Mockery::mock(DispatchAction::class);
26+
$actionChain->shouldReceive('link');
27+
2628
$transitionChain = \Mockery::mock(DoTransition::class);
2729
$pathChain = \Mockery::mock(Path::class);
2830

@@ -50,6 +52,8 @@ public function testEnqueuedEventReturnsPayload(): void
5052
{
5153
$events = \Mockery::mock(Events::class);
5254
$actionChain = \Mockery::mock(DispatchAction::class);
55+
$actionChain->shouldReceive('link');
56+
5357
$transitionChain = \Mockery::mock(DoTransition::class);
5458
$pathChain = \Mockery::mock(Path::class);
5559

@@ -75,6 +79,8 @@ public function testMultipleEnqueuedEventsDoNotDispatch(): void
7579
{
7680
$events = \Mockery::mock(Events::class);
7781
$actionChain = \Mockery::mock(DispatchAction::class);
82+
$actionChain->shouldReceive('link');
83+
7884
$transitionChain = \Mockery::mock(DoTransition::class);
7985
$pathChain = \Mockery::mock(Path::class);
8086

‎tests/PHPUnit/Unit/Core/Region/EntryCascadingEventsTest.php‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public function testEntryCallbacksCanTriggerEvents(): void
2323
{
2424
$events = \Mockery::mock(Events::class);
2525
$actionChain = \Mockery::mock(DispatchAction::class);
26+
$actionChain->shouldReceive('link');
27+
2628
$transitionChain = \Mockery::mock(DoTransition::class);
2729
$pathChain = \Mockery::mock(Path::class);
2830

@@ -55,6 +57,8 @@ public function testCascadedEventsAreQueued(): void
5557
{
5658
$events = \Mockery::mock(Events::class);
5759
$actionChain = \Mockery::mock(DispatchAction::class);
60+
$actionChain->shouldReceive('link');
61+
5862
$transitionChain = \Mockery::mock(DoTransition::class);
5963
$pathChain = \Mockery::mock(Path::class);
6064

‎tests/PHPUnit/Unit/Core/Region/EventQueueClearingTest.php‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public function testQueueIsClearedBeforeProcessing(): void
2424
{
2525
$events = \Mockery::mock(Events::class);
2626
$actionChain = \Mockery::mock(DispatchAction::class);
27+
$actionChain->shouldReceive('link');
28+
2729
$transitionChain = \Mockery::mock(DoTransition::class);
2830
$pathChain = \Mockery::mock(Path::class);
2931

@@ -64,6 +66,8 @@ public function testQueueClearingPreventsReprocessing(): void
6466
{
6567
$events = \Mockery::mock(Events::class);
6668
$actionChain = \Mockery::mock(DispatchAction::class);
69+
$actionChain->shouldReceive('link');
70+
6771
$transitionChain = \Mockery::mock(DoTransition::class);
6872
$pathChain = \Mockery::mock(Path::class);
6973

‎tests/PHPUnit/Unit/Core/Region/FinalStateDetectionTest.php‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ private function createRegion(string $initial, string $final): Region
5353
{
5454
$events = \Mockery::mock(Events::class);
5555
$actionChain = \Mockery::mock(DispatchAction::class);
56+
$actionChain->shouldReceive('link');
5657
$transitionChain = \Mockery::mock(DoTransition::class);
5758
$pathChain = \Mockery::mock(Path::class);
5859

0 commit comments

Comments
 (0)