cuke_modeler 1.3.0 → 1.4.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 +5 -5
- data/.travis.yml +16 -0
- data/Gemfile +11 -3
- data/History.md +5 -0
- data/LICENSE.txt +1 -1
- data/Rakefile +8 -1
- data/appveyor.yml +7 -12
- data/cuke_modeler.gemspec +2 -2
- data/lib/cuke_modeler/adapters/gherkin_6_adapter.rb +309 -0
- data/lib/cuke_modeler/parsing.rb +28 -5
- data/lib/cuke_modeler/version.rb +1 -1
- data/testing/cucumber/step_definitions/feature_file_steps.rb +1 -1
- data/testing/cucumber/step_definitions/modeling_steps.rb +2 -2
- data/testing/cucumber/step_definitions/verification_steps.rb +3 -2
- data/testing/file_helper.rb +3 -0
- data/testing/gemfiles/gherkin2.gemfile +7 -0
- data/testing/gemfiles/gherkin3.gemfile +6 -0
- data/testing/gemfiles/gherkin4.gemfile +7 -0
- data/testing/gemfiles/gherkin5.gemfile +6 -0
- data/testing/gemfiles/gherkin6.gemfile +10 -0
- data/testing/rspec/spec/integration/background_integration_spec.rb +80 -72
- data/testing/rspec/spec/integration/cell_integration_spec.rb +28 -20
- data/testing/rspec/spec/integration/comment_integration_spec.rb +11 -3
- data/testing/rspec/spec/integration/directory_integration_spec.rb +2 -2
- data/testing/rspec/spec/integration/doc_string_integration_spec.rb +26 -18
- data/testing/rspec/spec/integration/example_integration_spec.rb +75 -61
- data/testing/rspec/spec/integration/feature_file_integration_spec.rb +30 -20
- data/testing/rspec/spec/integration/feature_integration_spec.rb +106 -98
- data/testing/rspec/spec/integration/gherkin_2_adapter_spec.rb +11 -11
- data/testing/rspec/spec/integration/gherkin_3_adapter_spec.rb +11 -11
- data/testing/rspec/spec/integration/gherkin_4_adapter_spec.rb +12 -12
- data/testing/rspec/spec/integration/gherkin_6_adapter_spec.rb +166 -0
- data/testing/rspec/spec/integration/outline_integration_spec.rb +116 -102
- data/testing/rspec/spec/integration/parsing_integration_spec.rb +16 -4
- data/testing/rspec/spec/integration/row_integration_spec.rb +26 -18
- data/testing/rspec/spec/integration/scenario_integration_spec.rb +82 -74
- data/testing/rspec/spec/integration/step_integration_spec.rb +65 -49
- data/testing/rspec/spec/integration/table_integration_spec.rb +25 -17
- data/testing/rspec/spec/integration/tag_integration_spec.rb +27 -19
- data/testing/rspec/spec/spec_helper.rb +64 -35
- data/todo.txt +3 -1
- metadata +10 -8
- data/testing/cucumber/support/transforms.rb +0 -3
@@ -8,7 +8,15 @@ describe 'Parsing, Integration' do
|
|
8
8
|
|
9
9
|
describe 'unique behavior' do
|
10
10
|
|
11
|
-
it '
|
11
|
+
it 'will complain if using an unknown version of `gherkin`' do
|
12
|
+
skip('finish me')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'loads the correct dialects based on the version of Gherkin used', :gherkin6 => true do
|
16
|
+
expect(nodule.dialects).to equal(Gherkin::DIALECTS)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'loads the correct dialects based on the version of Gherkin used', :gherkin3 => true, :gherkin4_5 => true do
|
12
20
|
expect(nodule.dialects).to equal(Gherkin::DIALECTS)
|
13
21
|
end
|
14
22
|
|
@@ -39,7 +47,7 @@ describe 'Parsing, Integration' do
|
|
39
47
|
|
40
48
|
it 'raises and error if given something to parse besides a string' do
|
41
49
|
expect { nodule.parse_text(5) }.to raise_error(ArgumentError, /Text to parse must be a String but got/)
|
42
|
-
expect { nodule.parse_text("#{
|
50
|
+
expect { nodule.parse_text("#{FEATURE_KEYWORD}:") }.to_not raise_error
|
43
51
|
end
|
44
52
|
|
45
53
|
it 'includes the type of object provided when raising an non-string exception' do
|
@@ -48,11 +56,11 @@ describe 'Parsing, Integration' do
|
|
48
56
|
|
49
57
|
# todo - Stop doing this. Just return a feature file rooted AST. (Will require major version number change)
|
50
58
|
it 'returns an Array' do
|
51
|
-
result = nodule.parse_text("#{
|
59
|
+
result = nodule.parse_text("#{FEATURE_KEYWORD}:")
|
52
60
|
expect(result).to be_a(Array)
|
53
61
|
end
|
54
62
|
|
55
|
-
it 'raises
|
63
|
+
it 'raises an error if an error is encountered while parsing text' do
|
56
64
|
expect { nodule.parse_text('bad file') }.to raise_error(ArgumentError, /Error encountered while parsing '.*'/)
|
57
65
|
end
|
58
66
|
|
@@ -100,6 +108,10 @@ describe 'Parsing, Integration' do
|
|
100
108
|
expect { nodule.parse_text('bad file') }.to raise_error(ArgumentError, /'cuke_modeler_fake_file\.feature'/)
|
101
109
|
end
|
102
110
|
|
111
|
+
it 'uses the given file name if one is provided' do
|
112
|
+
skip('finish me')
|
113
|
+
end
|
114
|
+
|
103
115
|
end
|
104
116
|
|
105
117
|
end
|
@@ -44,7 +44,15 @@ describe 'Row, Integration' do
|
|
44
44
|
expect { clazz.new(source) }.to raise_error(/'cuke_modeler_stand_alone_row\.feature'/)
|
45
45
|
end
|
46
46
|
|
47
|
-
it 'stores the original data generated by the parsing adapter', :
|
47
|
+
it 'stores the original data generated by the parsing adapter', :gherkin6 => true do
|
48
|
+
example_row = clazz.new("| a | row |")
|
49
|
+
data = example_row.parsing_data
|
50
|
+
|
51
|
+
expect(data.keys).to match_array([:location, :cells])
|
52
|
+
expect(data[:location][:line]).to eq(5)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'stores the original data generated by the parsing adapter', :gherkin4_5 => true do
|
48
56
|
example_row = clazz.new("| a | row |")
|
49
57
|
data = example_row.parsing_data
|
50
58
|
|
@@ -88,10 +96,10 @@ describe 'Row, Integration' do
|
|
88
96
|
|
89
97
|
|
90
98
|
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
91
|
-
let(:source_gherkin) { "#{
|
99
|
+
let(:source_gherkin) { "#{FEATURE_KEYWORD}: Test feature
|
92
100
|
|
93
|
-
#{
|
94
|
-
#{
|
101
|
+
#{SCENARIO_KEYWORD}: Test test
|
102
|
+
#{STEP_KEYWORD} a step:
|
95
103
|
| a | table |"
|
96
104
|
}
|
97
105
|
|
@@ -132,10 +140,10 @@ describe 'Row, Integration' do
|
|
132
140
|
context 'a row that is part of a scenario' do
|
133
141
|
|
134
142
|
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
135
|
-
let(:source_gherkin) { "#{
|
143
|
+
let(:source_gherkin) { "#{FEATURE_KEYWORD}: Test feature
|
136
144
|
|
137
|
-
#{
|
138
|
-
#{
|
145
|
+
#{SCENARIO_KEYWORD}: Test test
|
146
|
+
#{STEP_KEYWORD} a step:
|
139
147
|
| a | table |"
|
140
148
|
}
|
141
149
|
|
@@ -155,10 +163,10 @@ describe 'Row, Integration' do
|
|
155
163
|
context 'a row that is part of a background' do
|
156
164
|
|
157
165
|
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
158
|
-
let(:source_gherkin) { "#{
|
166
|
+
let(:source_gherkin) { "#{FEATURE_KEYWORD}: Test feature
|
159
167
|
|
160
|
-
#{
|
161
|
-
#{
|
168
|
+
#{BACKGROUND_KEYWORD}: Test background
|
169
|
+
#{STEP_KEYWORD} a step:
|
162
170
|
| a | table |"
|
163
171
|
}
|
164
172
|
|
@@ -177,11 +185,11 @@ describe 'Row, Integration' do
|
|
177
185
|
context 'a row that is part of an outline' do
|
178
186
|
|
179
187
|
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
180
|
-
let(:source_gherkin) { "#{
|
188
|
+
let(:source_gherkin) { "#{FEATURE_KEYWORD}: Test feature
|
181
189
|
|
182
|
-
#{
|
183
|
-
#{
|
184
|
-
#{
|
190
|
+
#{OUTLINE_KEYWORD}: Test outline
|
191
|
+
#{STEP_KEYWORD} a step
|
192
|
+
#{EXAMPLE_KEYWORD}:
|
185
193
|
| param |
|
186
194
|
| value |"
|
187
195
|
}
|
@@ -228,11 +236,11 @@ describe 'Row, Integration' do
|
|
228
236
|
end
|
229
237
|
|
230
238
|
it "models the row's source line" do
|
231
|
-
source_text = "#{
|
239
|
+
source_text = "#{FEATURE_KEYWORD}: Test feature
|
232
240
|
|
233
|
-
#{
|
234
|
-
#{
|
235
|
-
#{
|
241
|
+
#{OUTLINE_KEYWORD}: Test outline
|
242
|
+
#{STEP_KEYWORD} a step
|
243
|
+
#{EXAMPLE_KEYWORD}:
|
236
244
|
| param |
|
237
245
|
| value |"
|
238
246
|
row = CukeModeler::Feature.new(source_text).tests.first.examples.first.rows.first
|
@@ -15,7 +15,7 @@ describe 'Scenario, Integration' do
|
|
15
15
|
describe 'unique behavior' do
|
16
16
|
|
17
17
|
it 'can be instantiated with the minimum viable Gherkin' do
|
18
|
-
source = "#{
|
18
|
+
source = "#{SCENARIO_KEYWORD}:"
|
19
19
|
|
20
20
|
expect { clazz.new(source) }.to_not raise_error
|
21
21
|
end
|
@@ -38,13 +38,21 @@ describe 'Scenario, Integration' do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'provides a descriptive filename when being parsed from stand alone text' do
|
41
|
-
source = "bad scenario text \n #{
|
41
|
+
source = "bad scenario text \n #{SCENARIO_KEYWORD}:\n And a step\n @foo "
|
42
42
|
|
43
43
|
expect { clazz.new(source) }.to raise_error(/'cuke_modeler_stand_alone_scenario\.feature'/)
|
44
44
|
end
|
45
45
|
|
46
|
-
it 'stores the original data generated by the parsing adapter', :
|
47
|
-
scenario = clazz.new("@tag\n#{
|
46
|
+
it 'stores the original data generated by the parsing adapter', :gherkin6 => true do
|
47
|
+
scenario = clazz.new("@tag\n#{SCENARIO_KEYWORD}: test scenario\ndescription\n#{STEP_KEYWORD} a step")
|
48
|
+
data = scenario.parsing_data
|
49
|
+
|
50
|
+
expect(data.keys).to match_array([:background, :rule, :scenario])
|
51
|
+
expect(data[:scenario][:name]).to eq('test scenario')
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'stores the original data generated by the parsing adapter', :gherkin4_5 => true do
|
55
|
+
scenario = clazz.new("@tag\n#{SCENARIO_KEYWORD}: test scenario\ndescription\n#{STEP_KEYWORD} a step")
|
48
56
|
data = scenario.parsing_data
|
49
57
|
|
50
58
|
expect(data.keys).to match_array([:type, :tags, :location, :keyword, :name, :steps, :description])
|
@@ -52,7 +60,7 @@ describe 'Scenario, Integration' do
|
|
52
60
|
end
|
53
61
|
|
54
62
|
it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
|
55
|
-
scenario = clazz.new("@tag\n#{
|
63
|
+
scenario = clazz.new("@tag\n#{SCENARIO_KEYWORD}: test scenario\ndescription\n#{STEP_KEYWORD} a step")
|
56
64
|
data = scenario.parsing_data
|
57
65
|
|
58
66
|
expect(data.keys).to match_array([:type, :tags, :location, :keyword, :name, :steps, :description])
|
@@ -60,7 +68,7 @@ describe 'Scenario, Integration' do
|
|
60
68
|
end
|
61
69
|
|
62
70
|
it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
|
63
|
-
scenario = clazz.new("@tag\n#{
|
71
|
+
scenario = clazz.new("@tag\n#{SCENARIO_KEYWORD}: test scenario\ndescription\n#{STEP_KEYWORD} a step")
|
64
72
|
data = scenario.parsing_data
|
65
73
|
|
66
74
|
expect(data.keys).to match_array(['keyword', 'name', 'line', 'description', 'id', 'type', 'steps', 'tags'])
|
@@ -69,8 +77,8 @@ describe 'Scenario, Integration' do
|
|
69
77
|
|
70
78
|
it 'properly sets its child models' do
|
71
79
|
source = "@a_tag
|
72
|
-
#{
|
73
|
-
#{
|
80
|
+
#{SCENARIO_KEYWORD}: Test scenario
|
81
|
+
#{STEP_KEYWORD} a step"
|
74
82
|
|
75
83
|
scenario = clazz.new(source)
|
76
84
|
step = scenario.steps.first
|
@@ -81,7 +89,7 @@ describe 'Scenario, Integration' do
|
|
81
89
|
end
|
82
90
|
|
83
91
|
it 'trims whitespace from its source description' do
|
84
|
-
source = ["#{
|
92
|
+
source = ["#{SCENARIO_KEYWORD}:",
|
85
93
|
' ',
|
86
94
|
' description line 1',
|
87
95
|
'',
|
@@ -90,7 +98,7 @@ describe 'Scenario, Integration' do
|
|
90
98
|
'',
|
91
99
|
'',
|
92
100
|
'',
|
93
|
-
" #{
|
101
|
+
" #{STEP_KEYWORD} a step"]
|
94
102
|
source = source.join("\n")
|
95
103
|
|
96
104
|
scenario = clazz.new(source)
|
@@ -111,10 +119,10 @@ describe 'Scenario, Integration' do
|
|
111
119
|
|
112
120
|
|
113
121
|
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
114
|
-
let(:source_gherkin) { "#{
|
122
|
+
let(:source_gherkin) { "#{FEATURE_KEYWORD}: Test feature
|
115
123
|
|
116
|
-
#{
|
117
|
-
#{
|
124
|
+
#{SCENARIO_KEYWORD}: Test test
|
125
|
+
#{STEP_KEYWORD} a step"
|
118
126
|
}
|
119
127
|
|
120
128
|
let(:directory_model) { CukeModeler::Directory.new(test_directory) }
|
@@ -152,19 +160,19 @@ describe 'Scenario, Integration' do
|
|
152
160
|
|
153
161
|
context 'from source text' do
|
154
162
|
|
155
|
-
let(:source_text) { "#{
|
163
|
+
let(:source_text) { "#{SCENARIO_KEYWORD}:" }
|
156
164
|
let(:scenario) { clazz.new(source_text) }
|
157
165
|
|
158
166
|
|
159
167
|
it "models the scenario's keyword" do
|
160
|
-
expect(scenario.keyword).to eq("#{
|
168
|
+
expect(scenario.keyword).to eq("#{SCENARIO_KEYWORD}")
|
161
169
|
end
|
162
170
|
|
163
171
|
it "models the scenario's source line" do
|
164
|
-
source_text = "#{
|
172
|
+
source_text = "#{FEATURE_KEYWORD}:
|
165
173
|
|
166
|
-
#{
|
167
|
-
#{
|
174
|
+
#{SCENARIO_KEYWORD}: foo
|
175
|
+
#{STEP_KEYWORD} step"
|
168
176
|
scenario = CukeModeler::Feature.new(source_text).tests.first
|
169
177
|
|
170
178
|
expect(scenario.source_line).to eq(3)
|
@@ -174,15 +182,15 @@ describe 'Scenario, Integration' do
|
|
174
182
|
context 'a filled scenario' do
|
175
183
|
|
176
184
|
let(:source_text) { "@tag1 @tag2 @tag3
|
177
|
-
#{
|
185
|
+
#{SCENARIO_KEYWORD}: Scenario name
|
178
186
|
|
179
187
|
Scenario description.
|
180
188
|
|
181
189
|
Some more.
|
182
190
|
Even more.
|
183
191
|
|
184
|
-
#{
|
185
|
-
#{
|
192
|
+
#{STEP_KEYWORD} a step
|
193
|
+
#{STEP_KEYWORD} another step" }
|
186
194
|
let(:scenario) { clazz.new(source_text) }
|
187
195
|
|
188
196
|
|
@@ -215,7 +223,7 @@ describe 'Scenario, Integration' do
|
|
215
223
|
|
216
224
|
context 'an empty scenario' do
|
217
225
|
|
218
|
-
let(:source_text) { "#{
|
226
|
+
let(:source_text) { "#{SCENARIO_KEYWORD}:" }
|
219
227
|
let(:scenario) { clazz.new(source_text) }
|
220
228
|
|
221
229
|
|
@@ -245,19 +253,19 @@ describe 'Scenario, Integration' do
|
|
245
253
|
describe 'comparison' do
|
246
254
|
|
247
255
|
it 'is equal to a background with the same steps' do
|
248
|
-
source = "#{
|
249
|
-
#{
|
250
|
-
#{
|
256
|
+
source = "#{SCENARIO_KEYWORD}:
|
257
|
+
#{STEP_KEYWORD} step 1
|
258
|
+
#{STEP_KEYWORD} step 2"
|
251
259
|
scenario = clazz.new(source)
|
252
260
|
|
253
|
-
source = "#{
|
254
|
-
#{
|
255
|
-
#{
|
261
|
+
source = "#{BACKGROUND_KEYWORD}:
|
262
|
+
#{STEP_KEYWORD} step 1
|
263
|
+
#{STEP_KEYWORD} step 2"
|
256
264
|
background_1 = CukeModeler::Background.new(source)
|
257
265
|
|
258
|
-
source = "#{
|
259
|
-
#{
|
260
|
-
#{
|
266
|
+
source = "#{BACKGROUND_KEYWORD}:
|
267
|
+
#{STEP_KEYWORD} step 2
|
268
|
+
#{STEP_KEYWORD} step 1"
|
261
269
|
background_2 = CukeModeler::Background.new(source)
|
262
270
|
|
263
271
|
|
@@ -266,19 +274,19 @@ describe 'Scenario, Integration' do
|
|
266
274
|
end
|
267
275
|
|
268
276
|
it 'is equal to a scenario with the same steps' do
|
269
|
-
source = "#{
|
270
|
-
#{
|
271
|
-
#{
|
277
|
+
source = "#{SCENARIO_KEYWORD}:
|
278
|
+
#{STEP_KEYWORD} step 1
|
279
|
+
#{STEP_KEYWORD} step 2"
|
272
280
|
scenario_1 = clazz.new(source)
|
273
281
|
|
274
|
-
source = "#{
|
275
|
-
#{
|
276
|
-
#{
|
282
|
+
source = "#{SCENARIO_KEYWORD}:
|
283
|
+
#{STEP_KEYWORD} step 1
|
284
|
+
#{STEP_KEYWORD} step 2"
|
277
285
|
scenario_2 = clazz.new(source)
|
278
286
|
|
279
|
-
source = "#{
|
280
|
-
#{
|
281
|
-
#{
|
287
|
+
source = "#{SCENARIO_KEYWORD}:
|
288
|
+
#{STEP_KEYWORD} step 2
|
289
|
+
#{STEP_KEYWORD} step 1"
|
282
290
|
scenario_3 = clazz.new(source)
|
283
291
|
|
284
292
|
|
@@ -287,23 +295,23 @@ describe 'Scenario, Integration' do
|
|
287
295
|
end
|
288
296
|
|
289
297
|
it 'is equal to an outline with the same steps' do
|
290
|
-
source = "#{
|
291
|
-
#{
|
292
|
-
#{
|
298
|
+
source = "#{SCENARIO_KEYWORD}:
|
299
|
+
#{STEP_KEYWORD} step 1
|
300
|
+
#{STEP_KEYWORD} step 2"
|
293
301
|
scenario = clazz.new(source)
|
294
302
|
|
295
|
-
source = "#{
|
296
|
-
#{
|
297
|
-
#{
|
298
|
-
#{
|
303
|
+
source = "#{OUTLINE_KEYWORD}:
|
304
|
+
#{STEP_KEYWORD} step 1
|
305
|
+
#{STEP_KEYWORD} step 2
|
306
|
+
#{EXAMPLE_KEYWORD}:
|
299
307
|
| param |
|
300
308
|
| value |"
|
301
309
|
outline_1 = CukeModeler::Outline.new(source)
|
302
310
|
|
303
|
-
source = "#{
|
304
|
-
#{
|
305
|
-
#{
|
306
|
-
#{
|
311
|
+
source = "#{OUTLINE_KEYWORD}:
|
312
|
+
#{STEP_KEYWORD} step 2
|
313
|
+
#{STEP_KEYWORD} step 1
|
314
|
+
#{EXAMPLE_KEYWORD}:
|
307
315
|
| param |
|
308
316
|
| value |"
|
309
317
|
outline_2 = CukeModeler::Outline.new(source)
|
@@ -320,14 +328,14 @@ describe 'Scenario, Integration' do
|
|
320
328
|
|
321
329
|
it 'can be remade from its own output' do
|
322
330
|
source = "@tag1 @tag2 @tag3
|
323
|
-
#{
|
331
|
+
#{SCENARIO_KEYWORD}: A scenario with everything it could have
|
324
332
|
|
325
333
|
Including a description
|
326
334
|
and then some.
|
327
335
|
|
328
|
-
#{
|
336
|
+
#{STEP_KEYWORD} a step
|
329
337
|
| value |
|
330
|
-
#{
|
338
|
+
#{STEP_KEYWORD} another step
|
331
339
|
\"\"\"
|
332
340
|
some string
|
333
341
|
\"\"\""
|
@@ -343,27 +351,27 @@ describe 'Scenario, Integration' do
|
|
343
351
|
context 'from source text' do
|
344
352
|
|
345
353
|
it 'can output an empty scenario' do
|
346
|
-
source = ["#{
|
354
|
+
source = ["#{SCENARIO_KEYWORD}:"]
|
347
355
|
source = source.join("\n")
|
348
356
|
scenario = clazz.new(source)
|
349
357
|
|
350
358
|
scenario_output = scenario.to_s.split("\n", -1)
|
351
359
|
|
352
|
-
expect(scenario_output).to eq(["#{
|
360
|
+
expect(scenario_output).to eq(["#{SCENARIO_KEYWORD}:"])
|
353
361
|
end
|
354
362
|
|
355
363
|
it 'can output a scenario that has a name' do
|
356
|
-
source = ["#{
|
364
|
+
source = ["#{SCENARIO_KEYWORD}: test scenario"]
|
357
365
|
source = source.join("\n")
|
358
366
|
scenario = clazz.new(source)
|
359
367
|
|
360
368
|
scenario_output = scenario.to_s.split("\n", -1)
|
361
369
|
|
362
|
-
expect(scenario_output).to eq(["#{
|
370
|
+
expect(scenario_output).to eq(["#{SCENARIO_KEYWORD}: test scenario"])
|
363
371
|
end
|
364
372
|
|
365
373
|
it 'can output a scenario that has a description' do
|
366
|
-
source = ["#{
|
374
|
+
source = ["#{SCENARIO_KEYWORD}:",
|
367
375
|
'Some description.',
|
368
376
|
'Some more description.']
|
369
377
|
source = source.join("\n")
|
@@ -371,17 +379,17 @@ describe 'Scenario, Integration' do
|
|
371
379
|
|
372
380
|
scenario_output = scenario.to_s.split("\n", -1)
|
373
381
|
|
374
|
-
expect(scenario_output).to eq(["#{
|
382
|
+
expect(scenario_output).to eq(["#{SCENARIO_KEYWORD}:",
|
375
383
|
'',
|
376
384
|
'Some description.',
|
377
385
|
'Some more description.'])
|
378
386
|
end
|
379
387
|
|
380
388
|
it 'can output a scenario that has steps' do
|
381
|
-
source = ["#{
|
382
|
-
"#{
|
389
|
+
source = ["#{SCENARIO_KEYWORD}:",
|
390
|
+
"#{STEP_KEYWORD} a step",
|
383
391
|
'|value|',
|
384
|
-
"#{
|
392
|
+
"#{STEP_KEYWORD} another step",
|
385
393
|
'"""',
|
386
394
|
'some string',
|
387
395
|
'"""']
|
@@ -390,10 +398,10 @@ describe 'Scenario, Integration' do
|
|
390
398
|
|
391
399
|
scenario_output = scenario.to_s.split("\n", -1)
|
392
400
|
|
393
|
-
expect(scenario_output).to eq(["#{
|
394
|
-
" #{
|
401
|
+
expect(scenario_output).to eq(["#{SCENARIO_KEYWORD}:",
|
402
|
+
" #{STEP_KEYWORD} a step",
|
395
403
|
' | value |',
|
396
|
-
" #{
|
404
|
+
" #{STEP_KEYWORD} another step",
|
397
405
|
' """',
|
398
406
|
' some string',
|
399
407
|
' """'])
|
@@ -402,24 +410,24 @@ describe 'Scenario, Integration' do
|
|
402
410
|
it 'can output a scenario that has tags' do
|
403
411
|
source = ['@tag1 @tag2',
|
404
412
|
'@tag3',
|
405
|
-
"#{
|
413
|
+
"#{SCENARIO_KEYWORD}:"]
|
406
414
|
source = source.join("\n")
|
407
415
|
scenario = clazz.new(source)
|
408
416
|
|
409
417
|
scenario_output = scenario.to_s.split("\n", -1)
|
410
418
|
|
411
419
|
expect(scenario_output).to eq(['@tag1 @tag2 @tag3',
|
412
|
-
"#{
|
420
|
+
"#{SCENARIO_KEYWORD}:"])
|
413
421
|
end
|
414
422
|
|
415
423
|
it 'can output a scenario that has everything' do
|
416
424
|
source = ['@tag1 @tag2 @tag3',
|
417
|
-
"#{
|
425
|
+
"#{SCENARIO_KEYWORD}: A scenario with everything it could have",
|
418
426
|
'Including a description',
|
419
427
|
'and then some.',
|
420
|
-
"#{
|
428
|
+
"#{STEP_KEYWORD} a step",
|
421
429
|
'|value|',
|
422
|
-
"#{
|
430
|
+
"#{STEP_KEYWORD} another step",
|
423
431
|
'"""',
|
424
432
|
'some string',
|
425
433
|
'"""']
|
@@ -429,14 +437,14 @@ describe 'Scenario, Integration' do
|
|
429
437
|
scenario_output = scenario.to_s.split("\n", -1)
|
430
438
|
|
431
439
|
expect(scenario_output).to eq(['@tag1 @tag2 @tag3',
|
432
|
-
"#{
|
440
|
+
"#{SCENARIO_KEYWORD}: A scenario with everything it could have",
|
433
441
|
'',
|
434
442
|
'Including a description',
|
435
443
|
'and then some.',
|
436
444
|
'',
|
437
|
-
" #{
|
445
|
+
" #{STEP_KEYWORD} a step",
|
438
446
|
' | value |',
|
439
|
-
" #{
|
447
|
+
" #{STEP_KEYWORD} another step",
|
440
448
|
' """',
|
441
449
|
' some string',
|
442
450
|
' """'])
|