1515use solutionDrive \MultiStepBundle \Context \FlowContextInterface ;
1616use solutionDrive \MultiStepBundle \Model \MultiStepFlowInterface ;
1717use solutionDrive \MultiStepBundle \Model \MultiStepInterface ;
18+ use solutionDrive \MultiStepBundle \StepChecker \StepRequiredCheckerInterface ;
1819
1920class FlowContextSpec extends ObjectBehavior
2021{
@@ -39,26 +40,82 @@ public function it_returns_current_step(MultiStepInterface $currentStep): void
3940 $ this ->getCurrentStep ()->shouldBe ($ currentStep );
4041 }
4142
42- public function it_returns_next_step (MultiStepFlowInterface $ flow , MultiStepInterface $ nextStep ): void
43- {
43+ public function it_returns_direct_successor_as_next_step (
44+ MultiStepFlowInterface $ flow ,
45+ MultiStepInterface $ nextStep ,
46+ StepRequiredCheckerInterface $ stepRequiredChecker
47+ ): void {
48+ $ stepRequiredChecker ->check ()->shouldBeCalled ()->willReturn (true );
49+ $ nextStep ->getStepRequiredChecker ()->willReturn ($ stepRequiredChecker );
4450 $ flow ->getStepAfter (Argument::any ())->shouldBeCalled ()->willReturn ($ nextStep );
4551 $ this ->getNextStep ()->shouldBe ($ nextStep );
4652 }
4753
48- public function it_returns_previous_step (MultiStepFlowInterface $ flow , MultiStepInterface $ previousStep ): void
54+ public function it_returns_step_after_successor_as_next_step (
55+ MultiStepFlowInterface $ flow ,
56+ MultiStepInterface $ currentStep ,
57+ MultiStepInterface $ nextStep ,
58+ MultiStepInterface $ nextStepAfter ,
59+ StepRequiredCheckerInterface $ stepRequiredCheckerNext ,
60+ StepRequiredCheckerInterface $ stepRequiredCheckerAfterNext
61+ ): void {
62+
63+ $ stepRequiredCheckerNext ->check ()->shouldBeCalled ()->willReturn (false );
64+ $ nextStep ->getStepRequiredChecker ()->willReturn ($ stepRequiredCheckerNext );
65+
66+ $ stepRequiredCheckerAfterNext ->check ()->shouldBeCalled ()->willReturn (true );
67+ $ nextStepAfter ->getStepRequiredChecker ()->willReturn ($ stepRequiredCheckerAfterNext );
68+
69+ $ flow ->getStepAfter ($ currentStep )->shouldBeCalled ()->willReturn ($ nextStep );
70+ $ flow ->getStepAfter ($ nextStep )->shouldBeCalled ()->willReturn ($ nextStepAfter );
71+ $ this ->getNextStep ()->shouldBe ($ nextStepAfter );
72+ }
73+
74+ public function it_returns_direct_predecessor_previous_step (
75+ MultiStepFlowInterface $ flow ,
76+ MultiStepInterface $ previousStep ,
77+ StepRequiredCheckerInterface $ stepRequiredChecker
78+ ): void
4979 {
80+ $ stepRequiredChecker ->check ()->shouldBeCalled ()->willReturn (true );
81+ $ previousStep ->getStepRequiredChecker ()->willReturn ($ stepRequiredChecker );
5082 $ flow ->getStepBefore (Argument::any ())->shouldBeCalled ()->willReturn ($ previousStep );
5183 $ this ->getPreviousStep ()->shouldBe ($ previousStep );
5284 }
5385
86+ public function it_returns_step_before_predecessor_as_previous_step (
87+ MultiStepFlowInterface $ flow ,
88+ MultiStepInterface $ currentStep ,
89+ MultiStepInterface $ previousStep ,
90+ MultiStepInterface $ prviousStepBefore ,
91+ StepRequiredCheckerInterface $ stepRequiredCheckerPrevious ,
92+ StepRequiredCheckerInterface $ stepRequiredCheckerBeforePrevious
93+ ): void {
94+
95+ $ stepRequiredCheckerPrevious ->check ()->shouldBeCalled ()->willReturn (false );
96+ $ previousStep ->getStepRequiredChecker ()->willReturn ($ stepRequiredCheckerPrevious );
97+
98+ $ stepRequiredCheckerBeforePrevious ->check ()->shouldBeCalled ()->willReturn (true );
99+ $ prviousStepBefore ->getStepRequiredChecker ()->willReturn ($ stepRequiredCheckerBeforePrevious );
100+
101+ $ flow ->getStepBefore ($ currentStep )->shouldBeCalled ()->willReturn ($ previousStep );
102+ $ flow ->getStepBefore ($ previousStep )->shouldBeCalled ()->willReturn ($ prviousStepBefore );
103+ $ this ->getPreviousStep ()->shouldBe ($ prviousStepBefore );
104+ }
105+
54106 public function it_returns_false_for_has_next_step (MultiStepFlowInterface $ flow ): void
55107 {
56108 $ flow ->getStepAfter (Argument::any ())->willReturn (null );
57109 $ this ->hasNextStep ()->shouldBe (false );
58110 }
59111
60- public function it_returns_true_for_has_next_step (MultiStepFlowInterface $ flow , MultiStepInterface $ nextStep ): void
61- {
112+ public function it_returns_true_for_has_next_step (
113+ MultiStepFlowInterface $ flow ,
114+ MultiStepInterface $ nextStep ,
115+ StepRequiredCheckerInterface $ stepRequiredChecker
116+ ): void {
117+ $ stepRequiredChecker ->check ()->shouldBeCalled ()->willReturn (true );
118+ $ nextStep ->getStepRequiredChecker ()->willReturn ($ stepRequiredChecker );
62119 $ flow ->getStepAfter (Argument::any ())->willReturn ($ nextStep );
63120 $ this ->hasNextStep ()->shouldBe (true );
64121 }
@@ -69,9 +126,14 @@ public function it_returns_false_for_has_previous_step(MultiStepFlowInterface $f
69126 $ this ->hasPreviousStep ()->shouldBe (false );
70127 }
71128
72- public function it_returns_true_for_has_previous_step (MultiStepFlowInterface $ flow , MultiStepInterface $ nextStep ): void
73- {
74- $ flow ->getStepBefore (Argument::any ())->willReturn ($ nextStep );
129+ public function it_returns_true_for_has_previous_step (
130+ MultiStepFlowInterface $ flow ,
131+ MultiStepInterface $ previousStep ,
132+ StepRequiredCheckerInterface $ stepRequiredChecker
133+ ): void {
134+ $ stepRequiredChecker ->check ()->shouldBeCalled ()->willReturn (true );
135+ $ previousStep ->getStepRequiredChecker ()->willReturn ($ stepRequiredChecker );
136+ $ flow ->getStepBefore (Argument::any ())->willReturn ($ previousStep );
75137 $ this ->hasPreviousStep ()->shouldBe (true );
76138 }
77139
0 commit comments