cuke_modeler 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +16 -0
  3. data/Gemfile +11 -3
  4. data/History.md +5 -0
  5. data/LICENSE.txt +1 -1
  6. data/Rakefile +8 -1
  7. data/appveyor.yml +7 -12
  8. data/cuke_modeler.gemspec +2 -2
  9. data/lib/cuke_modeler/adapters/gherkin_6_adapter.rb +309 -0
  10. data/lib/cuke_modeler/parsing.rb +28 -5
  11. data/lib/cuke_modeler/version.rb +1 -1
  12. data/testing/cucumber/step_definitions/feature_file_steps.rb +1 -1
  13. data/testing/cucumber/step_definitions/modeling_steps.rb +2 -2
  14. data/testing/cucumber/step_definitions/verification_steps.rb +3 -2
  15. data/testing/file_helper.rb +3 -0
  16. data/testing/gemfiles/gherkin2.gemfile +7 -0
  17. data/testing/gemfiles/gherkin3.gemfile +6 -0
  18. data/testing/gemfiles/gherkin4.gemfile +7 -0
  19. data/testing/gemfiles/gherkin5.gemfile +6 -0
  20. data/testing/gemfiles/gherkin6.gemfile +10 -0
  21. data/testing/rspec/spec/integration/background_integration_spec.rb +80 -72
  22. data/testing/rspec/spec/integration/cell_integration_spec.rb +28 -20
  23. data/testing/rspec/spec/integration/comment_integration_spec.rb +11 -3
  24. data/testing/rspec/spec/integration/directory_integration_spec.rb +2 -2
  25. data/testing/rspec/spec/integration/doc_string_integration_spec.rb +26 -18
  26. data/testing/rspec/spec/integration/example_integration_spec.rb +75 -61
  27. data/testing/rspec/spec/integration/feature_file_integration_spec.rb +30 -20
  28. data/testing/rspec/spec/integration/feature_integration_spec.rb +106 -98
  29. data/testing/rspec/spec/integration/gherkin_2_adapter_spec.rb +11 -11
  30. data/testing/rspec/spec/integration/gherkin_3_adapter_spec.rb +11 -11
  31. data/testing/rspec/spec/integration/gherkin_4_adapter_spec.rb +12 -12
  32. data/testing/rspec/spec/integration/gherkin_6_adapter_spec.rb +166 -0
  33. data/testing/rspec/spec/integration/outline_integration_spec.rb +116 -102
  34. data/testing/rspec/spec/integration/parsing_integration_spec.rb +16 -4
  35. data/testing/rspec/spec/integration/row_integration_spec.rb +26 -18
  36. data/testing/rspec/spec/integration/scenario_integration_spec.rb +82 -74
  37. data/testing/rspec/spec/integration/step_integration_spec.rb +65 -49
  38. data/testing/rspec/spec/integration/table_integration_spec.rb +25 -17
  39. data/testing/rspec/spec/integration/tag_integration_spec.rb +27 -19
  40. data/testing/rspec/spec/spec_helper.rb +64 -35
  41. data/todo.txt +3 -1
  42. metadata +10 -8
  43. data/testing/cucumber/support/transforms.rb +0 -3
@@ -14,8 +14,18 @@ describe 'FeatureFile, Integration' do
14
14
 
15
15
  describe 'unique behavior' do
16
16
 
17
- it 'stores the original data generated by the parsing adapter', :gherkin4 => true do
18
- test_file_path = CukeModeler::FileHelper.create_feature_file(:text => "#{@feature_keyword}: test feature", :name => 'test_file')
17
+ it 'stores the original data generated by the parsing adapter', :gherkin6 => true do
18
+ test_file_path = CukeModeler::FileHelper.create_feature_file(:text => "#{FEATURE_KEYWORD}: test feature", :name => 'test_file')
19
+
20
+ feature_file = clazz.new(test_file_path)
21
+ data = feature_file.parsing_data
22
+
23
+ expect(data.keys).to match_array([:uri, :feature, :comments])
24
+ expect(File.basename(data[:uri])).to eq('test_file.feature')
25
+ end
26
+
27
+ it 'stores the original data generated by the parsing adapter', :gherkin4_5 => true do
28
+ test_file_path = CukeModeler::FileHelper.create_feature_file(:text => "#{FEATURE_KEYWORD}: test feature", :name => 'test_file')
19
29
 
20
30
  feature_file = clazz.new(test_file_path)
21
31
  data = feature_file.parsing_data
@@ -25,7 +35,7 @@ describe 'FeatureFile, Integration' do
25
35
  end
26
36
 
27
37
  it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
28
- test_file_path = CukeModeler::FileHelper.create_feature_file(:text => "#{@feature_keyword}: test feature", :name => 'test_file')
38
+ test_file_path = CukeModeler::FileHelper.create_feature_file(:text => "#{FEATURE_KEYWORD}: test feature", :name => 'test_file')
29
39
 
30
40
  feature_file = clazz.new(test_file_path)
31
41
  data = feature_file.parsing_data
@@ -35,7 +45,7 @@ describe 'FeatureFile, Integration' do
35
45
  end
36
46
 
37
47
  it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
38
- test_file_path = CukeModeler::FileHelper.create_feature_file(:text => "#{@feature_keyword}: test feature", :name => 'test_file')
48
+ test_file_path = CukeModeler::FileHelper.create_feature_file(:text => "#{FEATURE_KEYWORD}: test feature", :name => 'test_file')
39
49
 
40
50
  feature_file = clazz.new(test_file_path)
41
51
  data = feature_file.parsing_data
@@ -59,7 +69,7 @@ describe 'FeatureFile, Integration' do
59
69
 
60
70
  describe 'model population' do
61
71
 
62
- let(:source_text) { "#{@feature_keyword}: Test feature" }
72
+ let(:source_text) { "#{FEATURE_KEYWORD}: Test feature" }
63
73
  let(:feature_file_path) { CukeModeler::FileHelper.create_feature_file }
64
74
  let(:feature_file) { clazz.new(feature_file_path) }
65
75
 
@@ -84,50 +94,50 @@ describe 'FeatureFile, Integration' do
84
94
  it "models the feature file's comments" do
85
95
  source_text = "# feature comment
86
96
  @tag1 @tag2 @tag3
87
- #{@feature_keyword}: A feature with everything it could have
97
+ #{FEATURE_KEYWORD}: A feature with everything it could have
88
98
 
89
99
  Including a description
90
100
  and then some.
91
101
 
92
102
  # background comment
93
- #{@background_keyword}:
103
+ #{BACKGROUND_KEYWORD}:
94
104
 
95
105
  Background
96
106
  description
97
107
 
98
- #{@step_keyword} a step
108
+ #{STEP_KEYWORD} a step
99
109
  # table comment
100
110
  | value1 |
101
111
  # table row comment
102
112
  | value2 |
103
- #{@step_keyword} another step
113
+ #{STEP_KEYWORD} another step
104
114
 
105
115
  # scenario comment
106
116
  @scenario_tag
107
- #{@scenario_keyword}:
117
+ #{SCENARIO_KEYWORD}:
108
118
 
109
119
  Scenario
110
120
  description
111
121
 
112
- #{@step_keyword} a step
113
- #{@step_keyword} another step
122
+ #{STEP_KEYWORD} a step
123
+ #{STEP_KEYWORD} another step
114
124
  \"\"\"
115
125
  some text
116
126
  \"\"\"
117
127
 
118
128
  # outline comment
119
129
  @outline_tag
120
- #{@outline_keyword}:
130
+ #{OUTLINE_KEYWORD}:
121
131
 
122
132
  Outline
123
133
  description
124
134
 
125
135
  # step comment
126
- #{@step_keyword} a step
136
+ #{STEP_KEYWORD} a step
127
137
  # table comment
128
138
  | value2 |
129
139
  # step comment
130
- #{@step_keyword} another step
140
+ #{STEP_KEYWORD} another step
131
141
  # doc string comment
132
142
  \"\"\"
133
143
  some text
@@ -135,7 +145,7 @@ describe 'FeatureFile, Integration' do
135
145
 
136
146
  # example comment
137
147
  @example_tag
138
- #{@example_keyword}:
148
+ #{EXAMPLE_KEYWORD}:
139
149
 
140
150
  Example
141
151
  description
@@ -187,7 +197,7 @@ describe 'FeatureFile, Integration' do
187
197
  end
188
198
 
189
199
  it 'properly sets its child models' do
190
- file_path = CukeModeler::FileHelper.create_feature_file(:text => "#{@feature_keyword}: Test feature", :name => 'test_file')
200
+ file_path = CukeModeler::FileHelper.create_feature_file(:text => "#{FEATURE_KEYWORD}: Test feature", :name => 'test_file')
191
201
 
192
202
  file = clazz.new(file_path)
193
203
  feature = file.feature
@@ -202,7 +212,7 @@ describe 'FeatureFile, Integration' do
202
212
  let(:feature_file_path) { CukeModeler::FileHelper.create_feature_file(:text => '', :name => 'feature_file_test_file', :directory => directory_path) }
203
213
 
204
214
  before(:each) do
205
- File.open(feature_file_path, 'w') { |file| file.write("#{@feature_keyword}: Test feature") }
215
+ File.open(feature_file_path, 'w') { |file| file.write("#{FEATURE_KEYWORD}: Test feature") }
206
216
  end
207
217
 
208
218
  let(:directory_model) { CukeModeler::Directory.new(directory_path) }
@@ -228,7 +238,7 @@ describe 'FeatureFile, Integration' do
228
238
 
229
239
  context 'from source text' do
230
240
 
231
- let(:source_text) { "#{@feature_keyword}: Test feature" }
241
+ let(:source_text) { "#{FEATURE_KEYWORD}: Test feature" }
232
242
  let(:feature_file_path) { CukeModeler::FileHelper.create_feature_file(:text => '', :name => 'feature_file_test_file') }
233
243
  let(:feature_file) { clazz.new(feature_file_path) }
234
244
 
@@ -246,7 +256,7 @@ describe 'FeatureFile, Integration' do
246
256
  end
247
257
 
248
258
  it 'can be remade from its own output' do
249
- path = CukeModeler::FileHelper.create_feature_file(:text => "#{@feature_keyword}:", :name => 'feature_file_test_file')
259
+ path = CukeModeler::FileHelper.create_feature_file(:text => "#{FEATURE_KEYWORD}:", :name => 'feature_file_test_file')
250
260
  feature_file = clazz.new(path)
251
261
 
252
262
  feature_file_output = feature_file.to_s
@@ -16,7 +16,7 @@ describe 'Feature, Integration' do
16
16
  describe 'unique behavior' do
17
17
 
18
18
  it 'can be instantiated with the minimum viable Gherkin' do
19
- source = "#{@feature_keyword}:"
19
+ source = "#{FEATURE_KEYWORD}:"
20
20
 
21
21
  expect { clazz.new(source) }.to_not raise_error
22
22
  end
@@ -47,11 +47,11 @@ describe 'Feature, Integration' do
47
47
 
48
48
  it 'properly sets its child models' do
49
49
  source = "@a_tag
50
- #{@feature_keyword}: Test feature
51
- #{@background_keyword}: Test background
52
- #{@scenario_keyword}: Test scenario
53
- #{@outline_keyword}: Test outline
54
- #{@example_keyword}: Test Examples
50
+ #{FEATURE_KEYWORD}: Test feature
51
+ #{BACKGROUND_KEYWORD}: Test background
52
+ #{SCENARIO_KEYWORD}: Test scenario
53
+ #{OUTLINE_KEYWORD}: Test outline
54
+ #{EXAMPLE_KEYWORD}: Test Examples
55
55
  | param |
56
56
  | value |"
57
57
 
@@ -69,8 +69,16 @@ describe 'Feature, Integration' do
69
69
  expect(tag.parent_model).to equal(feature)
70
70
  end
71
71
 
72
- it 'stores the original data generated by the parsing adapter', :gherkin4 => true do
73
- feature = clazz.new("@tag\n#{@feature_keyword}: test feature\ndescription\n#{@background_keyword}:\n#{@scenario_keyword}:")
72
+ it 'stores the original data generated by the parsing adapter', :gherkin6 => true do
73
+ feature = clazz.new("@tag\n#{FEATURE_KEYWORD}: test feature\ndescription\n#{BACKGROUND_KEYWORD}:\n#{SCENARIO_KEYWORD}:")
74
+ data = feature.parsing_data
75
+
76
+ expect(data.keys).to match_array([:tags, :location, :language, :keyword, :name, :children, :description])
77
+ expect(data[:name]).to eq('test feature')
78
+ end
79
+
80
+ it 'stores the original data generated by the parsing adapter', :gherkin4_5 => true do
81
+ feature = clazz.new("@tag\n#{FEATURE_KEYWORD}: test feature\ndescription\n#{BACKGROUND_KEYWORD}:\n#{SCENARIO_KEYWORD}:")
74
82
  data = feature.parsing_data
75
83
 
76
84
  expect(data.keys).to match_array([:type, :tags, :location, :language, :keyword, :name, :children, :description])
@@ -78,7 +86,7 @@ describe 'Feature, Integration' do
78
86
  end
79
87
 
80
88
  it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
81
- feature = clazz.new("@tag\n#{@feature_keyword}: test feature\ndescription\n#{@background_keyword}:\n#{@scenario_keyword}:")
89
+ feature = clazz.new("@tag\n#{FEATURE_KEYWORD}: test feature\ndescription\n#{BACKGROUND_KEYWORD}:\n#{SCENARIO_KEYWORD}:")
82
90
  data = feature.parsing_data
83
91
 
84
92
  expect(data.keys).to match_array([:type, :tags, :location, :language, :keyword, :name, :scenarioDefinitions, :comments, :background, :description])
@@ -86,7 +94,7 @@ describe 'Feature, Integration' do
86
94
  end
87
95
 
88
96
  it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
89
- feature = clazz.new("@tag\n#{@feature_keyword}: test feature\ndescription\n#{@background_keyword}:\n#{@scenario_keyword}:")
97
+ feature = clazz.new("@tag\n#{FEATURE_KEYWORD}: test feature\ndescription\n#{BACKGROUND_KEYWORD}:\n#{SCENARIO_KEYWORD}:")
90
98
  data = feature.parsing_data
91
99
 
92
100
  expect(data.keys).to match_array(['keyword', 'name', 'line', 'description', 'id', 'uri', 'elements', 'tags'])
@@ -94,7 +102,7 @@ describe 'Feature, Integration' do
94
102
  end
95
103
 
96
104
  it 'trims whitespace from its source description' do
97
- source = ["#{@feature_keyword}:",
105
+ source = ["#{FEATURE_KEYWORD}:",
98
106
  ' ',
99
107
  ' description line 1',
100
108
  '',
@@ -103,7 +111,7 @@ describe 'Feature, Integration' do
103
111
  '',
104
112
  '',
105
113
  '',
106
- " #{@scenario_keyword}:"]
114
+ " #{SCENARIO_KEYWORD}:"]
107
115
  source = source.join("\n")
108
116
 
109
117
  feature = clazz.new(source)
@@ -131,14 +139,14 @@ describe 'Feature, Integration' do
131
139
  context 'from source text' do
132
140
 
133
141
  it "models the feature's keyword" do
134
- source_text = "#{@feature_keyword}:"
142
+ source_text = "#{FEATURE_KEYWORD}:"
135
143
  feature = CukeModeler::Feature.new(source_text)
136
144
 
137
- expect(feature.keyword).to eq(@feature_keyword)
145
+ expect(feature.keyword).to eq(FEATURE_KEYWORD)
138
146
  end
139
147
 
140
148
  it "models the feature's source line" do
141
- source_text = "#{@feature_keyword}:"
149
+ source_text = "#{FEATURE_KEYWORD}:"
142
150
  feature = CukeModeler::Feature.new(source_text)
143
151
 
144
152
  expect(feature.source_line).to eq(1)
@@ -148,31 +156,31 @@ describe 'Feature, Integration' do
148
156
  context 'a filled feature' do
149
157
 
150
158
  let(:source_text) { "@tag_1 @tag_2
151
- #{@feature_keyword}: Feature Foo
159
+ #{FEATURE_KEYWORD}: Feature Foo
152
160
 
153
161
  Some feature description.
154
162
 
155
163
  Some more.
156
164
  And some more.
157
165
 
158
- #{@background_keyword}: The background
159
- #{@step_keyword} some setup step
166
+ #{BACKGROUND_KEYWORD}: The background
167
+ #{STEP_KEYWORD} some setup step
160
168
 
161
- #{@scenario_keyword}: Scenario 1
162
- #{@step_keyword} a step
169
+ #{SCENARIO_KEYWORD}: Scenario 1
170
+ #{STEP_KEYWORD} a step
163
171
 
164
- #{@outline_keyword}: Outline 1
165
- #{@step_keyword} a step
166
- #{@example_keyword}:
172
+ #{OUTLINE_KEYWORD}: Outline 1
173
+ #{STEP_KEYWORD} a step
174
+ #{EXAMPLE_KEYWORD}:
167
175
  | param |
168
176
  | value |
169
177
 
170
- #{@scenario_keyword}: Scenario 2
171
- #{@step_keyword} a step
178
+ #{SCENARIO_KEYWORD}: Scenario 2
179
+ #{STEP_KEYWORD} a step
172
180
 
173
- #{@outline_keyword}: Outline 2
174
- #{@step_keyword} a step
175
- #{@example_keyword}:
181
+ #{OUTLINE_KEYWORD}: Outline 2
182
+ #{STEP_KEYWORD} a step
183
+ #{EXAMPLE_KEYWORD}:
176
184
  | param |
177
185
  | value |" }
178
186
  let(:feature) { clazz.new(source_text) }
@@ -218,7 +226,7 @@ describe 'Feature, Integration' do
218
226
 
219
227
  context 'an empty feature' do
220
228
 
221
- let(:source_text) { "#{@feature_keyword}:" }
229
+ let(:source_text) { "#{FEATURE_KEYWORD}:" }
222
230
  let(:feature) { clazz.new(source_text) }
223
231
 
224
232
 
@@ -254,13 +262,13 @@ describe 'Feature, Integration' do
254
262
 
255
263
 
256
264
  it 'knows how many test cases it has' do
257
- source_1 = "#{@feature_keyword}: Test feature"
265
+ source_1 = "#{FEATURE_KEYWORD}: Test feature"
258
266
 
259
- source_2 = "#{@feature_keyword}: Test feature
260
- #{@scenario_keyword}: Test scenario
261
- #{@outline_keyword}: Test outline
262
- #{@step_keyword} a step
263
- #{@example_keyword}: Test examples
267
+ source_2 = "#{FEATURE_KEYWORD}: Test feature
268
+ #{SCENARIO_KEYWORD}: Test scenario
269
+ #{OUTLINE_KEYWORD}: Test outline
270
+ #{STEP_KEYWORD} a step
271
+ #{EXAMPLE_KEYWORD}: Test examples
264
272
  |param|
265
273
  |value_1|
266
274
  |value_2|"
@@ -282,7 +290,7 @@ describe 'Feature, Integration' do
282
290
 
283
291
 
284
292
  let(:test_directory) { CukeModeler::FileHelper.create_directory }
285
- let(:source_gherkin) { "#{@feature_keyword}: Test feature" }
293
+ let(:source_gherkin) { "#{FEATURE_KEYWORD}: Test feature" }
286
294
 
287
295
  let(:directory_model) { CukeModeler::Directory.new(test_directory) }
288
296
  let(:feature_model) { directory_model.feature_files.first.feature }
@@ -313,47 +321,47 @@ describe 'Feature, Integration' do
313
321
 
314
322
  it 'can be remade from its own output' do
315
323
  source = "@tag1 @tag2 @tag3
316
- #{@feature_keyword}: A feature with everything it could have
324
+ #{FEATURE_KEYWORD}: A feature with everything it could have
317
325
 
318
326
  Including a description
319
327
  and then some.
320
328
 
321
- #{@background_keyword}:
329
+ #{BACKGROUND_KEYWORD}:
322
330
 
323
331
  Background
324
332
  description
325
333
 
326
- #{@step_keyword} a step
334
+ #{STEP_KEYWORD} a step
327
335
  | value1 |
328
- #{@step_keyword} another step
336
+ #{STEP_KEYWORD} another step
329
337
 
330
338
  @scenario_tag
331
- #{@scenario_keyword}:
339
+ #{SCENARIO_KEYWORD}:
332
340
 
333
341
  Scenario
334
342
  description
335
343
 
336
- #{@step_keyword} a step
337
- #{@step_keyword} another step
344
+ #{STEP_KEYWORD} a step
345
+ #{STEP_KEYWORD} another step
338
346
  \"\"\"
339
347
  some text
340
348
  \"\"\"
341
349
 
342
350
  @outline_tag
343
- #{@outline_keyword}:
351
+ #{OUTLINE_KEYWORD}:
344
352
 
345
353
  Outline
346
354
  description
347
355
 
348
- #{@step_keyword} a step
356
+ #{STEP_KEYWORD} a step
349
357
  | value2 |
350
- #{@step_keyword} another step
358
+ #{STEP_KEYWORD} another step
351
359
  \"\"\"
352
360
  some text
353
361
  \"\"\"
354
362
 
355
363
  @example_tag
356
- #{@example_keyword}:
364
+ #{EXAMPLE_KEYWORD}:
357
365
 
358
366
  Example
359
367
  description
@@ -372,27 +380,27 @@ describe 'Feature, Integration' do
372
380
  context 'from source text' do
373
381
 
374
382
  it 'can output an empty feature' do
375
- source = ["#{@feature_keyword}:"]
383
+ source = ["#{FEATURE_KEYWORD}:"]
376
384
  source = source.join("\n")
377
385
  feature = clazz.new(source)
378
386
 
379
387
  feature_output = feature.to_s.split("\n", -1)
380
388
 
381
- expect(feature_output).to eq(["#{@feature_keyword}:"])
389
+ expect(feature_output).to eq(["#{FEATURE_KEYWORD}:"])
382
390
  end
383
391
 
384
392
  it 'can output a feature that has a name' do
385
- source = ["#{@feature_keyword}: test feature"]
393
+ source = ["#{FEATURE_KEYWORD}: test feature"]
386
394
  source = source.join("\n")
387
395
  feature = clazz.new(source)
388
396
 
389
397
  feature_output = feature.to_s.split("\n", -1)
390
398
 
391
- expect(feature_output).to eq(["#{@feature_keyword}: test feature"])
399
+ expect(feature_output).to eq(["#{FEATURE_KEYWORD}: test feature"])
392
400
  end
393
401
 
394
402
  it 'can output a feature that has a description' do
395
- source = ["#{@feature_keyword}:",
403
+ source = ["#{FEATURE_KEYWORD}:",
396
404
  'Some description.',
397
405
  'Some more description.']
398
406
  source = source.join("\n")
@@ -400,7 +408,7 @@ describe 'Feature, Integration' do
400
408
 
401
409
  feature_output = feature.to_s.split("\n", -1)
402
410
 
403
- expect(feature_output).to eq(["#{@feature_keyword}:",
411
+ expect(feature_output).to eq(["#{FEATURE_KEYWORD}:",
404
412
  '',
405
413
  'Some description.',
406
414
  'Some more description.'])
@@ -409,51 +417,51 @@ describe 'Feature, Integration' do
409
417
  it 'can output a feature that has tags' do
410
418
  source = ['@tag1 @tag2',
411
419
  '@tag3',
412
- "#{@feature_keyword}:"]
420
+ "#{FEATURE_KEYWORD}:"]
413
421
  source = source.join("\n")
414
422
  feature = clazz.new(source)
415
423
 
416
424
  feature_output = feature.to_s.split("\n", -1)
417
425
 
418
426
  expect(feature_output).to eq(['@tag1 @tag2 @tag3',
419
- "#{@feature_keyword}:"])
427
+ "#{FEATURE_KEYWORD}:"])
420
428
  end
421
429
 
422
430
  it 'can output a feature that has a background' do
423
- source = ["#{@feature_keyword}:",
424
- "#{@background_keyword}:",
425
- "#{@step_keyword} a step"]
431
+ source = ["#{FEATURE_KEYWORD}:",
432
+ "#{BACKGROUND_KEYWORD}:",
433
+ "#{STEP_KEYWORD} a step"]
426
434
  source = source.join("\n")
427
435
  feature = clazz.new(source)
428
436
 
429
437
  feature_output = feature.to_s.split("\n", -1)
430
438
 
431
- expect(feature_output).to eq(["#{@feature_keyword}:",
439
+ expect(feature_output).to eq(["#{FEATURE_KEYWORD}:",
432
440
  '',
433
- " #{@background_keyword}:",
434
- " #{@step_keyword} a step"])
441
+ " #{BACKGROUND_KEYWORD}:",
442
+ " #{STEP_KEYWORD} a step"])
435
443
  end
436
444
 
437
445
  it 'can output a feature that has a scenario' do
438
- source = ["#{@feature_keyword}:",
439
- "#{@scenario_keyword}:",
440
- "#{@step_keyword} a step"]
446
+ source = ["#{FEATURE_KEYWORD}:",
447
+ "#{SCENARIO_KEYWORD}:",
448
+ "#{STEP_KEYWORD} a step"]
441
449
  source = source.join("\n")
442
450
  feature = clazz.new(source)
443
451
 
444
452
  feature_output = feature.to_s.split("\n", -1)
445
453
 
446
- expect(feature_output).to eq(["#{@feature_keyword}:",
454
+ expect(feature_output).to eq(["#{FEATURE_KEYWORD}:",
447
455
  '',
448
- " #{@scenario_keyword}:",
449
- " #{@step_keyword} a step"])
456
+ " #{SCENARIO_KEYWORD}:",
457
+ " #{STEP_KEYWORD} a step"])
450
458
  end
451
459
 
452
460
  it 'can output a feature that has an outline' do
453
- source = ["#{@feature_keyword}:",
454
- "#{@outline_keyword}:",
455
- "#{@step_keyword} a step",
456
- "#{@example_keyword}:",
461
+ source = ["#{FEATURE_KEYWORD}:",
462
+ "#{OUTLINE_KEYWORD}:",
463
+ "#{STEP_KEYWORD} a step",
464
+ "#{EXAMPLE_KEYWORD}:",
457
465
  '|param|',
458
466
  '|value|']
459
467
  source = source.join("\n")
@@ -461,48 +469,48 @@ describe 'Feature, Integration' do
461
469
 
462
470
  feature_output = feature.to_s.split("\n", -1)
463
471
 
464
- expect(feature_output).to eq(["#{@feature_keyword}:",
472
+ expect(feature_output).to eq(["#{FEATURE_KEYWORD}:",
465
473
  '',
466
- " #{@outline_keyword}:",
467
- " #{@step_keyword} a step",
474
+ " #{OUTLINE_KEYWORD}:",
475
+ " #{STEP_KEYWORD} a step",
468
476
  '',
469
- " #{@example_keyword}:",
477
+ " #{EXAMPLE_KEYWORD}:",
470
478
  ' | param |',
471
479
  ' | value |'])
472
480
  end
473
481
 
474
482
  it 'can output a feature that has everything' do
475
483
  source = ['@tag1 @tag2 @tag3',
476
- "#{@feature_keyword}: A feature with everything it could have",
484
+ "#{FEATURE_KEYWORD}: A feature with everything it could have",
477
485
  'Including a description',
478
486
  'and then some.',
479
- "#{@background_keyword}:",
487
+ "#{BACKGROUND_KEYWORD}:",
480
488
  'Background',
481
489
  'description',
482
- "#{@step_keyword} a step",
490
+ "#{STEP_KEYWORD} a step",
483
491
  '|value1|',
484
- "#{@step_keyword} another step",
492
+ "#{STEP_KEYWORD} another step",
485
493
  '@scenario_tag',
486
- "#{@scenario_keyword}:",
494
+ "#{SCENARIO_KEYWORD}:",
487
495
  'Scenario',
488
496
  'description',
489
- "#{@step_keyword} a step",
490
- "#{@step_keyword} another step",
497
+ "#{STEP_KEYWORD} a step",
498
+ "#{STEP_KEYWORD} another step",
491
499
  '"""',
492
500
  'some text',
493
501
  '"""',
494
502
  '@outline_tag',
495
- "#{@outline_keyword}:",
503
+ "#{OUTLINE_KEYWORD}:",
496
504
  'Outline ',
497
505
  'description',
498
- "#{@step_keyword} a step ",
506
+ "#{STEP_KEYWORD} a step ",
499
507
  '|value2|',
500
- "#{@step_keyword} another step",
508
+ "#{STEP_KEYWORD} another step",
501
509
  '"""',
502
510
  'some text',
503
511
  '"""',
504
512
  '@example_tag',
505
- "#{@example_keyword}:",
513
+ "#{EXAMPLE_KEYWORD}:",
506
514
  'Example',
507
515
  'description',
508
516
  '|param|',
@@ -513,47 +521,47 @@ describe 'Feature, Integration' do
513
521
  feature_output = feature.to_s.split("\n", -1)
514
522
 
515
523
  expect(feature_output).to eq(['@tag1 @tag2 @tag3',
516
- "#{@feature_keyword}: A feature with everything it could have",
524
+ "#{FEATURE_KEYWORD}: A feature with everything it could have",
517
525
  '',
518
526
  'Including a description',
519
527
  'and then some.',
520
528
  '',
521
- " #{@background_keyword}:",
529
+ " #{BACKGROUND_KEYWORD}:",
522
530
  '',
523
531
  ' Background',
524
532
  ' description',
525
533
  '',
526
- " #{@step_keyword} a step",
534
+ " #{STEP_KEYWORD} a step",
527
535
  ' | value1 |',
528
- " #{@step_keyword} another step",
536
+ " #{STEP_KEYWORD} another step",
529
537
  '',
530
538
  ' @scenario_tag',
531
- " #{@scenario_keyword}:",
539
+ " #{SCENARIO_KEYWORD}:",
532
540
  '',
533
541
  ' Scenario',
534
542
  ' description',
535
543
  '',
536
- " #{@step_keyword} a step",
537
- " #{@step_keyword} another step",
544
+ " #{STEP_KEYWORD} a step",
545
+ " #{STEP_KEYWORD} another step",
538
546
  ' """',
539
547
  ' some text',
540
548
  ' """',
541
549
  '',
542
550
  ' @outline_tag',
543
- " #{@outline_keyword}:",
551
+ " #{OUTLINE_KEYWORD}:",
544
552
  '',
545
553
  ' Outline',
546
554
  ' description',
547
555
  '',
548
- " #{@step_keyword} a step",
556
+ " #{STEP_KEYWORD} a step",
549
557
  ' | value2 |',
550
- " #{@step_keyword} another step",
558
+ " #{STEP_KEYWORD} another step",
551
559
  ' """',
552
560
  ' some text',
553
561
  ' """',
554
562
  '',
555
563
  ' @example_tag',
556
- " #{@example_keyword}:",
564
+ " #{EXAMPLE_KEYWORD}:",
557
565
  '',
558
566
  ' Example',
559
567
  ' description',
@@ -624,7 +632,7 @@ describe 'Feature, Integration' do
624
632
  end
625
633
 
626
634
 
627
- expect { clazz.new("#{@feature_keyword}:\n#{@scenario_keyword}:\n#{@step_keyword} foo") }.to raise_error(ArgumentError, /Unknown.*some_unknown_type/)
635
+ expect { clazz.new("#{FEATURE_KEYWORD}:\n#{SCENARIO_KEYWORD}:\n#{STEP_KEYWORD} foo") }.to raise_error(ArgumentError, /Unknown.*some_unknown_type/)
628
636
  ensure
629
637
  # Making sure that our changes don't escape a test and ruin the rest of the suite
630
638
  module CukeModeler