15
15
16
16
import java .util .Arrays ;
17
17
18
- import static org .mockito .Matchers .anyBoolean ;
19
18
import static org .mockito .Matchers .eq ;
20
19
import static org .mockito .Matchers .isA ;
21
20
import static org .mockito .Mockito .inOrder ;
@@ -30,14 +29,14 @@ public void run_wraps_execute_in_test_case_started_and_finished_events() throws
30
29
EventBus bus = mock (EventBus .class );
31
30
String language = ENGLISH ;
32
31
TestStep testStep = mock (TestStep .class );
33
- when (testStep .run (eq (bus ), eq (language ), isA (Scenario .class ), anyBoolean ( ))).thenReturn (resultWithStatus (Result .Type .UNDEFINED ));
32
+ when (testStep .run (eq (bus ), eq (language ), isA (Scenario .class ), isA ( TestCase . SkipStatus . class ))).thenReturn (resultWithStatus (Result .Type .UNDEFINED ));
34
33
35
34
TestCase testCase = new TestCase (Arrays .asList (testStep ), pickleEvent (), false );
36
35
testCase .run (bus );
37
36
38
37
InOrder order = inOrder (bus , testStep );
39
38
order .verify (bus ).send (isA (TestCaseStarted .class ));
40
- order .verify (testStep ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (false ));
39
+ order .verify (testStep ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (TestCase . SkipStatus . RUN_ALL ));
41
40
order .verify (bus ).send (isA (TestCaseFinished .class ));
42
41
}
43
42
@@ -46,33 +45,54 @@ public void run_all_steps() throws Throwable {
46
45
EventBus bus = mock (EventBus .class );
47
46
String language = ENGLISH ;
48
47
TestStep testStep1 = mock (TestStep .class );
49
- when (testStep1 .run (eq (bus ), eq (language ), isA (Scenario .class ), anyBoolean ( ))).thenReturn (resultWithStatus (Result .Type .PASSED ));
48
+ when (testStep1 .run (eq (bus ), eq (language ), isA (Scenario .class ), isA ( TestCase . SkipStatus . class ))).thenReturn (resultWithStatus (Result .Type .PASSED ));
50
49
TestStep testStep2 = mock (TestStep .class );
51
- when (testStep2 .run (eq (bus ), eq (language ), isA (Scenario .class ), anyBoolean ( ))).thenReturn (resultWithStatus (Result .Type .PASSED ));
50
+ when (testStep2 .run (eq (bus ), eq (language ), isA (Scenario .class ), isA ( TestCase . SkipStatus . class ))).thenReturn (resultWithStatus (Result .Type .PASSED ));
52
51
53
52
TestCase testCase = new TestCase (Arrays .asList (testStep1 , testStep2 ), pickleEvent (), false );
54
53
testCase .run (bus );
55
54
56
55
InOrder order = inOrder (testStep1 , testStep2 );
57
- order .verify (testStep1 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (false ));
58
- order .verify (testStep2 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (false ));
56
+ order .verify (testStep1 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (TestCase . SkipStatus . RUN_ALL ));
57
+ order .verify (testStep2 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (TestCase . SkipStatus . RUN_ALL ));
59
58
}
60
59
61
60
@ Test
62
- public void skip_steps_after_the_first_non_passed_result () throws Throwable {
61
+ public void run_hooks_after_the_first_non_passed_result_for_gherkin_step () throws Throwable {
63
62
EventBus bus = mock (EventBus .class );
64
63
String language = ENGLISH ;
65
64
TestStep testStep1 = mock (TestStep .class );
66
- when (testStep1 .run (eq (bus ), eq (language ), isA (Scenario .class ), anyBoolean ())).thenReturn (resultWithStatus (Result .Type .UNDEFINED ));
65
+ when (testStep1 .run (eq (bus ), eq (language ), isA (Scenario .class ), isA (TestCase .SkipStatus .class ))).thenReturn (resultWithStatus (Result .Type .UNDEFINED ));
66
+ when (testStep1 .finishingGherkinStepType ()).thenReturn (true );
67
67
TestStep testStep2 = mock (TestStep .class );
68
- when (testStep2 .run (eq (bus ), eq (language ), isA (Scenario .class ), anyBoolean ())).thenReturn (resultWithStatus (Result .Type .SKIPPED ));
68
+ when (testStep2 .run (eq (bus ), eq (language ), isA (Scenario .class ), isA (TestCase .SkipStatus .class ))).thenReturn (resultWithStatus (Result .Type .SKIPPED ));
69
+ when (testStep2 .startingGherkinStepType ()).thenReturn (false );
69
70
70
71
TestCase testCase = new TestCase (Arrays .asList (testStep1 , testStep2 ), pickleEvent (), false );
71
72
testCase .run (bus );
72
73
73
74
InOrder order = inOrder (testStep1 , testStep2 );
74
- order .verify (testStep1 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (false ));
75
- order .verify (testStep2 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (true ));
75
+ order .verify (testStep1 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (TestCase .SkipStatus .RUN_ALL ));
76
+ order .verify (testStep2 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (TestCase .SkipStatus .RUN_HOOKS ));
77
+ }
78
+
79
+ @ Test
80
+ public void skip_steps_at_first_gherkin_step_after_nonn_passed_result () throws Throwable {
81
+ EventBus bus = mock (EventBus .class );
82
+ String language = ENGLISH ;
83
+ TestStep testStep1 = mock (TestStep .class );
84
+ when (testStep1 .run (eq (bus ), eq (language ), isA (Scenario .class ), isA (TestCase .SkipStatus .class ))).thenReturn (resultWithStatus (Result .Type .UNDEFINED ));
85
+ when (testStep1 .finishingGherkinStepType ()).thenReturn (true );
86
+ TestStep testStep2 = mock (TestStep .class );
87
+ when (testStep2 .run (eq (bus ), eq (language ), isA (Scenario .class ), isA (TestCase .SkipStatus .class ))).thenReturn (resultWithStatus (Result .Type .SKIPPED ));
88
+ when (testStep2 .startingGherkinStepType ()).thenReturn (true );
89
+
90
+ TestCase testCase = new TestCase (Arrays .asList (testStep1 , testStep2 ), pickleEvent (), false );
91
+ testCase .run (bus );
92
+
93
+ InOrder order = inOrder (testStep1 , testStep2 );
94
+ order .verify (testStep1 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (TestCase .SkipStatus .RUN_ALL ));
95
+ order .verify (testStep2 ).run (eq (bus ), eq (language ), isA (Scenario .class ), eq (TestCase .SkipStatus .SKIP_ALL_SKIPABLE ));
76
96
}
77
97
78
98
private PickleEvent pickleEvent () {
0 commit comments