cucumber_analytics 0.0.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/History.rdoc +16 -0
- data/README.rdoc +5 -3
- data/Rakefile +7 -2
- data/cucumber_analytics.gemspec +7 -5
- data/features/analysis/step_collection.feature +44 -45
- data/features/modeling/background_modeling.feature +14 -144
- data/features/modeling/directory_modeling.feature +3 -2
- data/features/modeling/doc_string_modeling.feature +46 -0
- data/features/modeling/example_modeling.feature +13 -34
- data/features/modeling/feature_file_modeling.feature +3 -2
- data/features/modeling/feature_modeling.feature +18 -80
- data/features/modeling/outline_modeling.feature +25 -164
- data/features/modeling/scenario_modeling.feature +17 -144
- data/features/modeling/step_modeling.feature +68 -0
- data/features/modeling/table_modeling.feature +41 -0
- data/features/step_definitions/background_steps.rb +12 -11
- data/features/step_definitions/directory_steps.rb +6 -3
- data/features/step_definitions/doc_string_steps.rb +50 -0
- data/features/step_definitions/{file_steps.rb → feature_file_steps.rb} +8 -2
- data/features/step_definitions/feature_steps.rb +8 -4
- data/features/step_definitions/outline_steps.rb +12 -6
- data/features/step_definitions/setup_steps.rb +2 -2
- data/features/step_definitions/spec_steps.rb +6 -3
- data/features/step_definitions/step_steps.rb +91 -0
- data/features/step_definitions/table_steps.rb +10 -0
- data/features/step_definitions/test_steps.rb +6 -10
- data/features/step_definitions/world_steps.rb +28 -19
- data/features/support/env.rb +0 -2
- data/lib/cucumber_analytics/background.rb +16 -0
- data/lib/cucumber_analytics/containing.rb +18 -0
- data/lib/cucumber_analytics/directory.rb +83 -0
- data/lib/cucumber_analytics/doc_string.rb +55 -0
- data/lib/cucumber_analytics/example.rb +100 -0
- data/lib/cucumber_analytics/feature.rb +120 -0
- data/lib/cucumber_analytics/feature_element.rb +22 -40
- data/lib/cucumber_analytics/feature_file.rb +74 -0
- data/lib/cucumber_analytics/outline.rb +49 -0
- data/lib/cucumber_analytics/parsing.rb +30 -0
- data/lib/cucumber_analytics/scenario.rb +31 -0
- data/lib/cucumber_analytics/step.rb +142 -32
- data/lib/cucumber_analytics/table.rb +51 -0
- data/lib/cucumber_analytics/taggable.rb +35 -0
- data/lib/cucumber_analytics/test_element.rb +36 -91
- data/lib/cucumber_analytics/version.rb +1 -1
- data/lib/cucumber_analytics/world.rb +109 -153
- data/lib/cucumber_analytics.rb +12 -8
- data/spec/integration/background_integration_spec.rb +18 -0
- data/spec/integration/directory_integration_spec.rb +24 -0
- data/spec/{feature_spec.rb → integration/feature_file_integration_spec.rb} +5 -5
- data/spec/integration/feature_integration_spec.rb +86 -0
- data/spec/integration/outline_integration_spec.rb +22 -0
- data/spec/integration/scenario_integration_spec.rb +18 -0
- data/spec/integration/step_integration_spec.rb +116 -0
- data/spec/integration/world_integration_spec.rb +40 -0
- data/spec/spec_helper.rb +7 -3
- data/spec/unit/background_unit_spec.rb +22 -0
- data/spec/unit/bare_bones_unit_specs.rb +13 -0
- data/spec/unit/containing_element_unit_specs.rb +17 -0
- data/spec/unit/directory_unit_spec.rb +91 -0
- data/spec/unit/doc_string_unit_spec.rb +65 -0
- data/spec/unit/example_unit_spec.rb +171 -0
- data/spec/unit/feature_element_unit_spec.rb +19 -0
- data/spec/unit/feature_element_unit_specs.rb +39 -0
- data/spec/unit/feature_file_unit_spec.rb +82 -0
- data/spec/unit/feature_unit_spec.rb +81 -0
- data/spec/unit/nested_element_unit_specs.rb +24 -0
- data/spec/unit/outline_unit_spec.rb +56 -0
- data/spec/unit/parsing_unit_spec.rb +21 -0
- data/spec/unit/prepopulated_unit_specs.rb +13 -0
- data/spec/unit/scenario_unit_spec.rb +36 -0
- data/spec/unit/step_unit_spec.rb +231 -0
- data/spec/unit/table_unit_spec.rb +52 -0
- data/spec/unit/taggable_unit_spec.rb +63 -0
- data/spec/unit/tagged_element_unit_specs.rb +48 -0
- data/spec/unit/test_element_unit_spec.rb +40 -0
- data/spec/unit/test_element_unit_specs.rb +31 -0
- data/spec/unit/world_unit_spec.rb +167 -0
- metadata +106 -41
- data/lib/cucumber_analytics/logging.rb +0 -28
- data/lib/cucumber_analytics/outline_example.rb +0 -110
- data/lib/cucumber_analytics/parsed_background.rb +0 -45
- data/lib/cucumber_analytics/parsed_directory.rb +0 -78
- data/lib/cucumber_analytics/parsed_feature.rb +0 -97
- data/lib/cucumber_analytics/parsed_file.rb +0 -199
- data/lib/cucumber_analytics/parsed_scenario.rb +0 -67
- data/lib/cucumber_analytics/parsed_scenario_outline.rb +0 -122
- data/spec/background_spec.rb +0 -23
- data/spec/directory_spec.rb +0 -18
- data/spec/example_spec.rb +0 -37
- data/spec/file_spec.rb +0 -20
- data/spec/outline_spec.rb +0 -32
- data/spec/scenario_spec.rb +0 -33
- data/spec/step_spec.rb +0 -24
|
@@ -17,80 +17,30 @@ Feature: Features can be modeled.
|
|
|
17
17
|
Background: Test file setup.
|
|
18
18
|
Given the following feature file "much_stuff.feature":
|
|
19
19
|
"""
|
|
20
|
-
|
|
21
|
-
#Or any line that is a comment, really.
|
|
22
|
-
@a_feature_level_tag @and_another@and_another
|
|
20
|
+
@a_feature_level_tag @and_another
|
|
23
21
|
|
|
24
22
|
Feature:The test feature name.
|
|
25
|
-
Some
|
|
26
|
-
|
|
23
|
+
Some feature description.
|
|
27
24
|
And some more.
|
|
28
25
|
|
|
29
|
-
Scenario but not really because I left out the magic ':'
|
|
30
|
-
Given some description that uses keywords
|
|
31
|
-
And more of it
|
|
32
|
-
When I chuck the kitchen sink at it:
|
|
33
|
-
But
|
|
34
|
-
*
|
|
35
|
-
|
|
|
36
|
-
|
|
37
|
-
Scenario Outline
|
|
38
|
-
Examples
|
|
39
|
-
\"\"\"
|
|
40
|
-
Background
|
|
41
|
-
Then this is still one big valid description
|
|
42
|
-
# Oddly enough, if this comment had come earlier in the description
|
|
43
|
-
# it would have broken Cucumber. Comments can't be mixed into the
|
|
44
|
-
# freeform text for some reason.
|
|
45
|
-
#@commented_tag
|
|
46
|
-
|
|
47
|
-
|
|
48
26
|
Background:Some general test setup stuff.
|
|
49
|
-
A little more information.
|
|
50
27
|
* some setup step
|
|
51
28
|
|
|
52
|
-
@a_tag
|
|
53
|
-
|
|
54
|
-
@another_tag@yet_another_tag
|
|
55
29
|
Scenario: The first scenario's name.
|
|
56
|
-
|
|
57
|
-
More text.
|
|
58
|
-
Given the first step
|
|
59
|
-
And this step takes a table:
|
|
60
|
-
| data |
|
|
61
|
-
| more data |
|
|
62
|
-
When the second step
|
|
63
|
-
Then the third step
|
|
64
|
-
#Random comment
|
|
65
|
-
@outline_tag
|
|
66
|
-
Scenario Outline: The scenario outline's name.
|
|
67
|
-
Some text describing the scenario.
|
|
68
|
-
More text.
|
|
69
|
-
Given the first "<param1>"
|
|
70
|
-
And this step takes a table:
|
|
71
|
-
| data |
|
|
72
|
-
| more data |
|
|
73
|
-
When the second "<param2>"
|
|
74
|
-
Then the third step
|
|
75
|
-
Examples: text describing the significance of the examples
|
|
76
|
-
| param1 | param2 |
|
|
77
|
-
| x | y |
|
|
78
|
-
|
|
79
|
-
@example_tag
|
|
80
|
-
|
|
81
|
-
Examples: some examples with different significance and a tag
|
|
82
|
-
| param1 | param2 |
|
|
83
|
-
| a | b |
|
|
84
|
-
| c | d |
|
|
30
|
+
* a step
|
|
85
31
|
|
|
32
|
+
Scenario Outline: The scenario outline's name.
|
|
33
|
+
* a step
|
|
34
|
+
Examples:
|
|
35
|
+
| param |
|
|
36
|
+
| x |
|
|
37
|
+
| y |
|
|
38
|
+
Examples:
|
|
39
|
+
| param |
|
|
40
|
+
| z |
|
|
86
41
|
|
|
87
42
|
Scenario: The second scenario's name.
|
|
88
|
-
|
|
89
|
-
More text.
|
|
90
|
-
Given the first step
|
|
91
|
-
When the second step
|
|
92
|
-
Then the third step
|
|
93
|
-
|
|
43
|
+
* a step
|
|
94
44
|
"""
|
|
95
45
|
And the following feature file "barely_any_stuff.feature":
|
|
96
46
|
"""
|
|
@@ -129,20 +79,8 @@ Feature: Features can be modeled.
|
|
|
129
79
|
|
|
130
80
|
Scenario: The feature's description is modeled.
|
|
131
81
|
Then the descriptive lines of feature "1" are as follows:
|
|
132
|
-
| Some
|
|
133
|
-
| And some more.
|
|
134
|
-
| Scenario but not really because I left out the magic ':' |
|
|
135
|
-
| Given some description that uses keywords |
|
|
136
|
-
| And more of it |
|
|
137
|
-
| When I chuck the kitchen sink at it: |
|
|
138
|
-
| But |
|
|
139
|
-
| * |
|
|
140
|
-
| \| |
|
|
141
|
-
| Scenario Outline |
|
|
142
|
-
| Examples |
|
|
143
|
-
| """ |
|
|
144
|
-
| Background |
|
|
145
|
-
| Then this is still one big valid description |
|
|
82
|
+
| Some feature description. |
|
|
83
|
+
| And some more. |
|
|
146
84
|
And feature "2" has no descriptive lines
|
|
147
85
|
And feature "3" has no descriptive lines
|
|
148
86
|
|
|
@@ -150,7 +88,6 @@ Feature: Features can be modeled.
|
|
|
150
88
|
Then feature "1" is found to have the following tags:
|
|
151
89
|
| @a_feature_level_tag |
|
|
152
90
|
| @and_another |
|
|
153
|
-
| @and_another |
|
|
154
91
|
And feature "2" has no tags
|
|
155
92
|
And feature "3" has no tags
|
|
156
93
|
|
|
@@ -200,5 +137,6 @@ Feature: Features can be modeled.
|
|
|
200
137
|
When the corresponding unit tests are run
|
|
201
138
|
Then all of those specifications are met
|
|
202
139
|
Examples:
|
|
203
|
-
| additional specifications
|
|
204
|
-
|
|
|
140
|
+
| additional specifications |
|
|
141
|
+
| feature_unit_spec.rb |
|
|
142
|
+
| feature_integration_spec.rb |
|
|
@@ -16,72 +16,23 @@ Feature: Scenario Outline elements can be modeled.
|
|
|
16
16
|
Given the following feature file:
|
|
17
17
|
"""
|
|
18
18
|
@a_feature_level_tag
|
|
19
|
-
Feature:
|
|
20
|
-
Some more feature description.
|
|
19
|
+
Feature:
|
|
21
20
|
|
|
22
21
|
@outline_tag
|
|
23
|
-
Scenario Outline:The scenario outline's name.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
| <param1> |
|
|
38
|
-
| <param2> |
|
|
39
|
-
And some setup step
|
|
40
|
-
* some setup step
|
|
41
|
-
#
|
|
42
|
-
When a step with a *parameter*
|
|
43
|
-
But a big step:
|
|
44
|
-
#random comment
|
|
45
|
-
\"\"\"
|
|
46
|
-
some text
|
|
47
|
-
|
|
48
|
-
#some comments
|
|
49
|
-
Scenario:
|
|
50
|
-
Scenario Outline:
|
|
51
|
-
Examples:
|
|
52
|
-
@
|
|
53
|
-
Feature:
|
|
54
|
-
|
|
|
55
|
-
Given
|
|
56
|
-
When
|
|
57
|
-
Then
|
|
58
|
-
And
|
|
59
|
-
But
|
|
60
|
-
*
|
|
61
|
-
some more text
|
|
62
|
-
\"\"\"
|
|
63
|
-
Then *lots* *of* *parameters*
|
|
64
|
-
|
|
65
|
-
Examples:text describing the significance of the examples
|
|
66
|
-
Anything besides the | that starts a row should be valid
|
|
67
|
-
description at this point in the test. YMMV
|
|
68
|
-
| param1 | param2 |
|
|
69
|
-
#A more random comment
|
|
70
|
-
| x | y |
|
|
71
|
-
@example_tag @another_one
|
|
72
|
-
Examples: some examples with different significance and a tag
|
|
73
|
-
|
|
74
|
-
Words, words, words, words,
|
|
75
|
-
|
|
76
|
-
why so many words?
|
|
77
|
-
#
|
|
78
|
-
|
|
79
|
-
| param1 | param2 |
|
|
80
|
-
#
|
|
81
|
-
|
|
82
|
-
#
|
|
83
|
-
| a | b |
|
|
84
|
-
|
|
22
|
+
Scenario Outline: The scenario outline's name.
|
|
23
|
+
Some outline description
|
|
24
|
+
Some more description
|
|
25
|
+
|
|
26
|
+
Given a <setup> step
|
|
27
|
+
When an action step
|
|
28
|
+
Then a <verification> step
|
|
29
|
+
|
|
30
|
+
Examples: example 1
|
|
31
|
+
| setup | verification |
|
|
32
|
+
| x | y |
|
|
33
|
+
Examples: example 2
|
|
34
|
+
| setup | verification |
|
|
35
|
+
| a | b |
|
|
85
36
|
"""
|
|
86
37
|
And parameter delimiters of "*" and "*"
|
|
87
38
|
When the file is read
|
|
@@ -93,105 +44,14 @@ Feature: Scenario Outline elements can be modeled.
|
|
|
93
44
|
|
|
94
45
|
Scenario: The outline description is modeled.
|
|
95
46
|
Then the test descriptive lines are as follows:
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
| Scenario Outline |
|
|
99
|
-
| Examples |
|
|
100
|
-
| """ |
|
|
101
|
-
| Background |
|
|
102
|
-
| this is still one big valid description |
|
|
47
|
+
| Some outline description |
|
|
48
|
+
| Some more description |
|
|
103
49
|
|
|
104
50
|
Scenario: The outline steps are modeled.
|
|
105
51
|
Then the test steps are as follows:
|
|
106
|
-
|
|
|
107
|
-
|
|
|
108
|
-
|
|
|
109
|
-
| And some setup step |
|
|
110
|
-
| * some setup step |
|
|
111
|
-
| When a step with a *parameter* |
|
|
112
|
-
| But a big step: |
|
|
113
|
-
| """ |
|
|
114
|
-
| 'some text' |
|
|
115
|
-
| '' |
|
|
116
|
-
| '#some comments' |
|
|
117
|
-
| 'Scenario:' |
|
|
118
|
-
| 'Scenario Outline:' |
|
|
119
|
-
| 'Examples:' |
|
|
120
|
-
| '@' |
|
|
121
|
-
| 'Feature:' |
|
|
122
|
-
| '\|' |
|
|
123
|
-
| 'Given' |
|
|
124
|
-
| 'When' |
|
|
125
|
-
| 'Then' |
|
|
126
|
-
| 'And' |
|
|
127
|
-
| 'But' |
|
|
128
|
-
| '*' |
|
|
129
|
-
| ' some more text' |
|
|
130
|
-
| """ |
|
|
131
|
-
| Then *lots* *of* *parameters* |
|
|
132
|
-
And the test steps "without" arguments are as follows:
|
|
133
|
-
| Given this ** step takes a table: |
|
|
134
|
-
| And some setup step |
|
|
135
|
-
| * some setup step |
|
|
136
|
-
| When a step with a ** |
|
|
137
|
-
| But a big step: |
|
|
138
|
-
| Then ** ** ** |
|
|
139
|
-
And the test steps "without" keywords are as follows:
|
|
140
|
-
| this *parameterized* step takes a table: |
|
|
141
|
-
| \| <param1> \| |
|
|
142
|
-
| \| <param2> \| |
|
|
143
|
-
| some setup step |
|
|
144
|
-
| some setup step |
|
|
145
|
-
| a step with a *parameter* |
|
|
146
|
-
| a big step: |
|
|
147
|
-
| """ |
|
|
148
|
-
| 'some text' |
|
|
149
|
-
| '' |
|
|
150
|
-
| '#some comments' |
|
|
151
|
-
| 'Scenario:' |
|
|
152
|
-
| 'Scenario Outline:' |
|
|
153
|
-
| 'Examples:' |
|
|
154
|
-
| '@' |
|
|
155
|
-
| 'Feature:' |
|
|
156
|
-
| '\|' |
|
|
157
|
-
| 'Given' |
|
|
158
|
-
| 'When' |
|
|
159
|
-
| 'Then' |
|
|
160
|
-
| 'And' |
|
|
161
|
-
| 'But' |
|
|
162
|
-
| '*' |
|
|
163
|
-
| ' some more text' |
|
|
164
|
-
| """ |
|
|
165
|
-
| *lots* *of* *parameters* |
|
|
166
|
-
And the test steps "without" arguments "without" keywords are as follows:
|
|
167
|
-
| this ** step takes a table: |
|
|
168
|
-
| some setup step |
|
|
169
|
-
| some setup step |
|
|
170
|
-
| a step with a ** |
|
|
171
|
-
| a big step: |
|
|
172
|
-
| ** ** ** |
|
|
173
|
-
And the test step "1" has the following block:
|
|
174
|
-
| \| <param1> \| |
|
|
175
|
-
| \| <param2> \| |
|
|
176
|
-
And the test step "5" has the following block:
|
|
177
|
-
| """ |
|
|
178
|
-
| 'some text' |
|
|
179
|
-
| '' |
|
|
180
|
-
| '#some comments' |
|
|
181
|
-
| 'Scenario:' |
|
|
182
|
-
| 'Scenario Outline:' |
|
|
183
|
-
| 'Examples:' |
|
|
184
|
-
| '@' |
|
|
185
|
-
| 'Feature:' |
|
|
186
|
-
| '\|' |
|
|
187
|
-
| 'Given' |
|
|
188
|
-
| 'When' |
|
|
189
|
-
| 'Then' |
|
|
190
|
-
| 'And' |
|
|
191
|
-
| 'But' |
|
|
192
|
-
| '*' |
|
|
193
|
-
| ' some more text' |
|
|
194
|
-
| """ |
|
|
52
|
+
| a <setup> step |
|
|
53
|
+
| an action step |
|
|
54
|
+
| a <verification> step |
|
|
195
55
|
|
|
196
56
|
Scenario: The outline tags are modeled.
|
|
197
57
|
Then the test is found to have the following tags:
|
|
@@ -203,8 +63,8 @@ Feature: Scenario Outline elements can be modeled.
|
|
|
203
63
|
|
|
204
64
|
Scenario: The outline example blocks are modeled.
|
|
205
65
|
And the test example blocks are as follows:
|
|
206
|
-
|
|
|
207
|
-
|
|
|
66
|
+
| example 1 |
|
|
67
|
+
| example 2 |
|
|
208
68
|
|
|
209
69
|
Scenario Outline: Outline models pass all other specifications
|
|
210
70
|
Exact specifications detailing the API for Scenario Outline models.
|
|
@@ -212,5 +72,6 @@ Feature: Scenario Outline elements can be modeled.
|
|
|
212
72
|
When the corresponding unit tests are run
|
|
213
73
|
Then all of those specifications are met
|
|
214
74
|
Examples:
|
|
215
|
-
| additional specifications
|
|
216
|
-
|
|
|
75
|
+
| additional specifications |
|
|
76
|
+
| outline_unit_spec.rb |
|
|
77
|
+
| outline_integration_spec.rb |
|
|
@@ -15,53 +15,17 @@ Feature: Scenario elements can be modeled.
|
|
|
15
15
|
Given the following feature file:
|
|
16
16
|
"""
|
|
17
17
|
@a_feature_level_tag
|
|
18
|
-
Feature:
|
|
19
|
-
Some more feature description.
|
|
18
|
+
Feature:
|
|
20
19
|
|
|
21
20
|
@a_tag
|
|
22
|
-
|
|
23
|
-
@another_tag@yet_another_tag
|
|
21
|
+
@another_tag
|
|
24
22
|
Scenario:The first scenario's name.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Scenario Outline
|
|
29
|
-
Examples
|
|
30
|
-
\"\"\"
|
|
31
|
-
Background
|
|
32
|
-
this is still one big valid description
|
|
33
|
-
# Basically, if it's not a step keyword or tag then I will accept
|
|
34
|
-
# it as description here. Cucumber might not but but that's between
|
|
35
|
-
# you and its lexxer/parser. ;)
|
|
36
|
-
Given this *parameterized* step takes a table:
|
|
37
|
-
| data |
|
|
38
|
-
| more data |
|
|
39
|
-
And some setup step
|
|
40
|
-
* some setup step
|
|
41
|
-
#
|
|
42
|
-
When a step with a *parameter*
|
|
43
|
-
But a big step:
|
|
44
|
-
#random comment
|
|
45
|
-
\"\"\"
|
|
46
|
-
some text
|
|
47
|
-
|
|
48
|
-
#some comments
|
|
49
|
-
Scenario:
|
|
50
|
-
Scenario Outline:
|
|
51
|
-
Examples:
|
|
52
|
-
@
|
|
53
|
-
Feature:
|
|
54
|
-
|
|
|
55
|
-
Given
|
|
56
|
-
When
|
|
57
|
-
Then
|
|
58
|
-
And
|
|
59
|
-
But
|
|
60
|
-
*
|
|
61
|
-
some more text
|
|
62
|
-
\"\"\"
|
|
63
|
-
Then *lots* *of* *parameters*
|
|
23
|
+
Some scenario description
|
|
24
|
+
Some more description
|
|
64
25
|
|
|
26
|
+
Given a setup step
|
|
27
|
+
When an action step
|
|
28
|
+
Then a verification step
|
|
65
29
|
"""
|
|
66
30
|
And parameter delimiters of "*" and "*"
|
|
67
31
|
When the file is read
|
|
@@ -73,111 +37,19 @@ Feature: Scenario elements can be modeled.
|
|
|
73
37
|
|
|
74
38
|
Scenario: The scenario description is modeled.
|
|
75
39
|
Then the test descriptive lines are as follows:
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
| Scenario Outline |
|
|
79
|
-
| Examples |
|
|
80
|
-
| """ |
|
|
81
|
-
| Background |
|
|
82
|
-
| this is still one big valid description |
|
|
40
|
+
| Some scenario description |
|
|
41
|
+
| Some more description |
|
|
83
42
|
|
|
84
43
|
Scenario: The scenario steps are modeled.
|
|
85
44
|
Then the test steps are as follows:
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
| And some setup step |
|
|
90
|
-
| * some setup step |
|
|
91
|
-
| When a step with a *parameter* |
|
|
92
|
-
| But a big step: |
|
|
93
|
-
| """ |
|
|
94
|
-
| 'some text' |
|
|
95
|
-
| '' |
|
|
96
|
-
| '#some comments' |
|
|
97
|
-
| 'Scenario:' |
|
|
98
|
-
| 'Scenario Outline:' |
|
|
99
|
-
| 'Examples:' |
|
|
100
|
-
| '@' |
|
|
101
|
-
| 'Feature:' |
|
|
102
|
-
| '\|' |
|
|
103
|
-
| 'Given' |
|
|
104
|
-
| 'When' |
|
|
105
|
-
| 'Then' |
|
|
106
|
-
| 'And' |
|
|
107
|
-
| 'But' |
|
|
108
|
-
| '*' |
|
|
109
|
-
| ' some more text' |
|
|
110
|
-
| """ |
|
|
111
|
-
| Then *lots* *of* *parameters* |
|
|
112
|
-
And the test steps "without" arguments are as follows:
|
|
113
|
-
| Given this ** step takes a table: |
|
|
114
|
-
| And some setup step |
|
|
115
|
-
| * some setup step |
|
|
116
|
-
| When a step with a ** |
|
|
117
|
-
| But a big step: |
|
|
118
|
-
| Then ** ** ** |
|
|
119
|
-
And the test steps "without" keywords are as follows:
|
|
120
|
-
| this *parameterized* step takes a table: |
|
|
121
|
-
| \| data \| |
|
|
122
|
-
| \| more data \| |
|
|
123
|
-
| some setup step |
|
|
124
|
-
| some setup step |
|
|
125
|
-
| a step with a *parameter* |
|
|
126
|
-
| a big step: |
|
|
127
|
-
| """ |
|
|
128
|
-
| 'some text' |
|
|
129
|
-
| '' |
|
|
130
|
-
| '#some comments' |
|
|
131
|
-
| 'Scenario:' |
|
|
132
|
-
| 'Scenario Outline:' |
|
|
133
|
-
| 'Examples:' |
|
|
134
|
-
| '@' |
|
|
135
|
-
| 'Feature:' |
|
|
136
|
-
| '\|' |
|
|
137
|
-
| 'Given' |
|
|
138
|
-
| 'When' |
|
|
139
|
-
| 'Then' |
|
|
140
|
-
| 'And' |
|
|
141
|
-
| 'But' |
|
|
142
|
-
| '*' |
|
|
143
|
-
| ' some more text' |
|
|
144
|
-
| """ |
|
|
145
|
-
| *lots* *of* *parameters* |
|
|
146
|
-
And the test steps "without" arguments "without" keywords are as follows:
|
|
147
|
-
| this ** step takes a table: |
|
|
148
|
-
| some setup step |
|
|
149
|
-
| some setup step |
|
|
150
|
-
| a step with a ** |
|
|
151
|
-
| a big step: |
|
|
152
|
-
| ** ** ** |
|
|
153
|
-
And the test step "1" has the following block:
|
|
154
|
-
| \| data \| |
|
|
155
|
-
| \| more data \| |
|
|
156
|
-
And the test step "5" has the following block:
|
|
157
|
-
| """ |
|
|
158
|
-
| 'some text' |
|
|
159
|
-
| '' |
|
|
160
|
-
| '#some comments' |
|
|
161
|
-
| 'Scenario:' |
|
|
162
|
-
| 'Scenario Outline:' |
|
|
163
|
-
| 'Examples:' |
|
|
164
|
-
| '@' |
|
|
165
|
-
| 'Feature:' |
|
|
166
|
-
| '\|' |
|
|
167
|
-
| 'Given' |
|
|
168
|
-
| 'When' |
|
|
169
|
-
| 'Then' |
|
|
170
|
-
| 'And' |
|
|
171
|
-
| 'But' |
|
|
172
|
-
| '*' |
|
|
173
|
-
| ' some more text' |
|
|
174
|
-
| """ |
|
|
45
|
+
| a setup step |
|
|
46
|
+
| an action step |
|
|
47
|
+
| a verification step |
|
|
175
48
|
|
|
176
49
|
Scenario: The scenario tags are modeled.
|
|
177
50
|
Then the test is found to have the following tags:
|
|
178
|
-
| @a_tag
|
|
179
|
-
| @another_tag
|
|
180
|
-
| @yet_another_tag |
|
|
51
|
+
| @a_tag |
|
|
52
|
+
| @another_tag |
|
|
181
53
|
|
|
182
54
|
Scenario: The scenario applied tags are modeled.
|
|
183
55
|
Then the test is found to have the following applied tags:
|
|
@@ -189,5 +61,6 @@ Feature: Scenario elements can be modeled.
|
|
|
189
61
|
When the corresponding unit tests are run
|
|
190
62
|
Then all of those specifications are met
|
|
191
63
|
Examples:
|
|
192
|
-
| additional specifications
|
|
193
|
-
|
|
|
64
|
+
| additional specifications |
|
|
65
|
+
| scenario_unit_spec.rb |
|
|
66
|
+
| scenario_integration_spec.rb |
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
Feature: Step elements can be modeled.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Acceptance criteria
|
|
5
|
+
|
|
6
|
+
All conceptual pieces of a Step can be modeled:
|
|
7
|
+
1. the step's keyword
|
|
8
|
+
2. the text of the step
|
|
9
|
+
3. the step's arguments, if any
|
|
10
|
+
4. the step's associated block, if any
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
Background: Test file setup.
|
|
14
|
+
Given the following feature file:
|
|
15
|
+
"""
|
|
16
|
+
Feature:
|
|
17
|
+
|
|
18
|
+
Scenario:
|
|
19
|
+
Given some setup step
|
|
20
|
+
And some big setup step:
|
|
21
|
+
\"\"\" content_type
|
|
22
|
+
some text
|
|
23
|
+
some more text
|
|
24
|
+
\"\"\"
|
|
25
|
+
When this *parameterized* step takes a table:
|
|
26
|
+
| data | a header |
|
|
27
|
+
| more data | a value |
|
|
28
|
+
Then a step with a *parameter*
|
|
29
|
+
"""
|
|
30
|
+
And parameter delimiters of "*" and "*"
|
|
31
|
+
When the file is read
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
Scenario: The step's keyword is modeled.
|
|
35
|
+
Then the test step "1" keyword is "Given"
|
|
36
|
+
And the test step "2" keyword is "And"
|
|
37
|
+
And the test step "3" keyword is "When"
|
|
38
|
+
And the test step "4" keyword is "Then"
|
|
39
|
+
|
|
40
|
+
Scenario: The text of the step is modeled.
|
|
41
|
+
Then test step "1" text is "some setup step"
|
|
42
|
+
And test step "2" text is "some big setup step:"
|
|
43
|
+
And test step "3" text is "this *parameterized* step takes a table:"
|
|
44
|
+
And test step "4" text is "a step with a *parameter*"
|
|
45
|
+
|
|
46
|
+
Scenario: The step's arguments are modeled.
|
|
47
|
+
Then test step "1" has no arguments
|
|
48
|
+
And test step "2" has no arguments
|
|
49
|
+
And test step "3" arguments are:
|
|
50
|
+
| parameterized |
|
|
51
|
+
And test step "4" arguments are:
|
|
52
|
+
| parameter |
|
|
53
|
+
|
|
54
|
+
Scenario: The steps's block is modeled.
|
|
55
|
+
Then step "1" has no block
|
|
56
|
+
Then step "2" has a "doc string"
|
|
57
|
+
And step "3" has a "table"
|
|
58
|
+
And step "4" has no block
|
|
59
|
+
|
|
60
|
+
Scenario Outline: Step models pass all other specifications
|
|
61
|
+
Exact specifications detailing the API for Step models.
|
|
62
|
+
Given that there are "<additional specifications>" detailing models
|
|
63
|
+
When the corresponding unit tests are run
|
|
64
|
+
Then all of those specifications are met
|
|
65
|
+
Examples:
|
|
66
|
+
| additional specifications |
|
|
67
|
+
| step_unit_spec.rb |
|
|
68
|
+
| step_integration_spec.rb |
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
Feature: Table elements can be modeled.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Acceptance criteria
|
|
5
|
+
|
|
6
|
+
All conceptual pieces of a Table can be modeled:
|
|
7
|
+
1. the table's contents
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Background: Test file setup.
|
|
11
|
+
Given the following feature file:
|
|
12
|
+
"""
|
|
13
|
+
Feature:
|
|
14
|
+
|
|
15
|
+
Scenario:
|
|
16
|
+
* some data filled step:
|
|
17
|
+
| value 1 | value 2 |
|
|
18
|
+
| value 3 | value 4 |
|
|
19
|
+
* some data filled step:
|
|
20
|
+
| value 1 |
|
|
21
|
+
| value 2 |
|
|
22
|
+
"""
|
|
23
|
+
When the file is read
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
Scenario: The table's contents are modeled.d
|
|
27
|
+
Then the step "1" table has the following contents:
|
|
28
|
+
| value 1 | value 2 |
|
|
29
|
+
| value 3 | value 4 |
|
|
30
|
+
And the step "2" table has the following contents:
|
|
31
|
+
| value 1 |
|
|
32
|
+
| value 2 |
|
|
33
|
+
|
|
34
|
+
Scenario Outline: Table models pass all other specifications
|
|
35
|
+
Exact specifications detailing the API for Table String models.
|
|
36
|
+
Given that there are "<additional specifications>" detailing models
|
|
37
|
+
When the corresponding unit tests are run
|
|
38
|
+
Then all of those specifications are met
|
|
39
|
+
Examples:
|
|
40
|
+
| additional specifications |
|
|
41
|
+
| table_unit_spec.rb |
|