cuke_modeler 1.0.4 → 1.1.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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +12 -0
  3. data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +5 -5
  4. data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +8 -5
  5. data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +8 -5
  6. data/lib/cuke_modeler/containing.rb +12 -7
  7. data/lib/cuke_modeler/models/background.rb +7 -2
  8. data/lib/cuke_modeler/models/cell.rb +2 -1
  9. data/lib/cuke_modeler/models/doc_string.rb +2 -1
  10. data/lib/cuke_modeler/models/example.rb +8 -4
  11. data/lib/cuke_modeler/models/feature.rb +4 -1
  12. data/lib/cuke_modeler/models/outline.rb +6 -2
  13. data/lib/cuke_modeler/models/row.rb +2 -1
  14. data/lib/cuke_modeler/models/scenario.rb +7 -2
  15. data/lib/cuke_modeler/models/step.rb +2 -1
  16. data/lib/cuke_modeler/models/table.rb +2 -1
  17. data/lib/cuke_modeler/models/tag.rb +2 -1
  18. data/lib/cuke_modeler/parsing.rb +45 -0
  19. data/lib/cuke_modeler/version.rb +1 -1
  20. data/testing/cucumber/features/modeling/background_modeling.feature +7 -0
  21. data/testing/cucumber/features/modeling/background_output.feature +6 -1
  22. data/testing/cucumber/features/modeling/directory_output.feature +6 -1
  23. data/testing/cucumber/features/modeling/doc_string_output.feature +6 -1
  24. data/testing/cucumber/features/modeling/example_modeling.feature +7 -0
  25. data/testing/cucumber/features/modeling/example_output.feature +6 -1
  26. data/testing/cucumber/features/modeling/feature_file_output.feature +6 -1
  27. data/testing/cucumber/features/modeling/feature_modeling.feature +7 -0
  28. data/testing/cucumber/features/modeling/feature_output.feature +6 -1
  29. data/testing/cucumber/features/modeling/model_output.feature +1 -8
  30. data/testing/cucumber/features/modeling/outline_modeling.feature +7 -0
  31. data/testing/cucumber/features/modeling/outline_output.feature +6 -1
  32. data/testing/cucumber/features/modeling/row_output.feature +6 -1
  33. data/testing/cucumber/features/modeling/scenario_modeling.feature +7 -0
  34. data/testing/cucumber/features/modeling/scenario_output.feature +6 -1
  35. data/testing/cucumber/features/modeling/step_output.feature +6 -1
  36. data/testing/cucumber/features/modeling/table_output.feature +6 -1
  37. data/testing/cucumber/features/modeling/tag_output.feature +6 -1
  38. data/testing/cucumber/step_definitions/verification_steps.rb +21 -12
  39. data/testing/dialect_helper.rb +48 -0
  40. data/testing/rspec/spec/integration/background_integration_spec.rb +93 -88
  41. data/testing/rspec/spec/integration/cell_integration_spec.rb +26 -27
  42. data/testing/rspec/spec/integration/directory_integration_spec.rb +4 -4
  43. data/testing/rspec/spec/integration/doc_string_integration_spec.rb +38 -39
  44. data/testing/rspec/spec/integration/example_integration_spec.rb +97 -95
  45. data/testing/rspec/spec/integration/feature_file_integration_spec.rb +5 -5
  46. data/testing/rspec/spec/integration/feature_integration_spec.rb +157 -155
  47. data/testing/rspec/spec/integration/gherkin_2_adapter_spec.rb +17 -17
  48. data/testing/rspec/spec/integration/gherkin_3_adapter_spec.rb +17 -17
  49. data/testing/rspec/spec/integration/gherkin_4_adapter_spec.rb +17 -17
  50. data/testing/rspec/spec/integration/outline_integration_spec.rb +359 -354
  51. data/testing/rspec/spec/integration/parsing_integration_spec.rb +30 -2
  52. data/testing/rspec/spec/integration/row_integration_spec.rb +23 -25
  53. data/testing/rspec/spec/integration/scenario_integration_spec.rb +238 -235
  54. data/testing/rspec/spec/integration/step_integration_spec.rb +69 -64
  55. data/testing/rspec/spec/integration/table_integration_spec.rb +32 -36
  56. data/testing/rspec/spec/integration/tag_integration_spec.rb +26 -27
  57. data/testing/rspec/spec/spec_helper.rb +43 -0
  58. data/testing/rspec/spec/unit/background_unit_spec.rb +7 -0
  59. data/testing/rspec/spec/unit/example_unit_spec.rb +7 -0
  60. data/testing/rspec/spec/unit/feature_unit_spec.rb +7 -0
  61. data/testing/rspec/spec/unit/outline_unit_spec.rb +7 -0
  62. data/testing/rspec/spec/unit/parsing_unit_spec.rb +33 -0
  63. data/testing/rspec/spec/unit/scenario_unit_spec.rb +7 -0
  64. data/testing/rspec/spec/unit/shared/keyworded_models_unit_specs.rb +58 -0
  65. data/testing/rspec/spec/unit/step_unit_spec.rb +1 -23
  66. data/testing/test_languages.json +45 -0
  67. data/todo.txt +1 -1
  68. metadata +6 -3
@@ -30,7 +30,7 @@ describe 'FeatureFile, Integration' do
30
30
 
31
31
  describe 'model population' do
32
32
 
33
- let(:source_text) { "Feature: Test feature" }
33
+ let(:source_text) { "#{@feature_keyword}: Test feature" }
34
34
  let(:feature_file_path) { "#{@default_file_directory}/#{@default_feature_file_name}" }
35
35
  let(:feature_file) { clazz.new(feature_file_path) }
36
36
 
@@ -76,7 +76,7 @@ describe 'FeatureFile, Integration' do
76
76
  file_path = "#{@default_file_directory}/#{@default_feature_file_name}"
77
77
 
78
78
  File.open(file_path, "w") { |file|
79
- file.puts('Feature: Test feature')
79
+ file.puts("#{@feature_keyword}: Test feature")
80
80
  }
81
81
 
82
82
  file = clazz.new(file_path)
@@ -90,7 +90,7 @@ describe 'FeatureFile, Integration' do
90
90
 
91
91
  before(:each) do
92
92
  file_path = "#{@default_file_directory}/feature_file_test_file.feature"
93
- File.open(file_path, 'w') { |file| file.write('Feature: Test feature') }
93
+ File.open(file_path, 'w') { |file| file.write("#{@feature_keyword}: Test feature") }
94
94
  end
95
95
 
96
96
  let(:directory) { CukeModeler::Directory.new(@default_file_directory) }
@@ -116,7 +116,7 @@ describe 'FeatureFile, Integration' do
116
116
 
117
117
  context 'from source text' do
118
118
 
119
- let(:source_text) { "Feature: Test feature" }
119
+ let(:source_text) { "#{@feature_keyword}: Test feature" }
120
120
  let(:feature_file_path) { "#{@default_file_directory}/#{@default_feature_file_name}" }
121
121
  let(:feature_file) { clazz.new(feature_file_path) }
122
122
 
@@ -135,7 +135,7 @@ describe 'FeatureFile, Integration' do
135
135
 
136
136
  it 'can be remade from its own output' do
137
137
  path = "#{@default_file_directory}/#{@default_feature_file_name}"
138
- File.open(path, "w") { |file| file.puts "Feature:" }
138
+ File.open(path, "w") { |file| file.puts "#{@feature_keyword}:" }
139
139
 
140
140
  source = path
141
141
  feature_file = clazz.new(source)
@@ -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:'
19
+ source = "#{@feature_keyword}:"
20
20
 
21
21
  expect { clazz.new(source) }.to_not raise_error
22
22
  end
@@ -28,15 +28,14 @@ describe 'Feature, Integration' do
28
28
  end
29
29
 
30
30
  it 'properly sets its child models' do
31
- source = ['@a_tag',
32
- 'Feature: Test feature',
33
- ' Background: Test background',
34
- ' Scenario: Test scenario',
35
- ' Scenario Outline: Test outline',
36
- ' Examples: Test Examples',
37
- ' | param |',
38
- ' | value |']
39
- source = source.join("\n")
31
+ source = "@a_tag
32
+ #{@feature_keyword}: Test feature
33
+ #{@background_keyword}: Test background
34
+ #{@scenario_keyword}: Test scenario
35
+ #{@outline_keyword}: Test outline
36
+ #{@example_keyword}: Test Examples
37
+ | param |
38
+ | value |"
40
39
 
41
40
 
42
41
  feature = clazz.new(source)
@@ -53,7 +52,7 @@ describe 'Feature, Integration' do
53
52
  end
54
53
 
55
54
  it 'stores the original data generated by the parsing adapter', :gherkin4 => true do
56
- feature = clazz.new("@tag\nFeature: test feature\ndescription\nBackground:\nScenario:")
55
+ feature = clazz.new("@tag\n#{@feature_keyword}: test feature\ndescription\n#{@background_keyword}:\n#{@scenario_keyword}:")
57
56
  data = feature.parsing_data
58
57
 
59
58
  expect(data.keys).to match_array([:type, :tags, :location, :language, :keyword, :name, :children, :description])
@@ -61,7 +60,7 @@ describe 'Feature, Integration' do
61
60
  end
62
61
 
63
62
  it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
64
- feature = clazz.new("@tag\nFeature: test feature\ndescription\nBackground:\nScenario:")
63
+ feature = clazz.new("@tag\n#{@feature_keyword}: test feature\ndescription\n#{@background_keyword}:\n#{@scenario_keyword}:")
65
64
  data = feature.parsing_data
66
65
 
67
66
  expect(data.keys).to match_array([:type, :tags, :location, :language, :keyword, :name, :scenarioDefinitions, :comments, :background, :description])
@@ -69,7 +68,7 @@ describe 'Feature, Integration' do
69
68
  end
70
69
 
71
70
  it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
72
- feature = clazz.new("@tag\nFeature: test feature\ndescription\nBackground:\nScenario:")
71
+ feature = clazz.new("@tag\n#{@feature_keyword}: test feature\ndescription\n#{@background_keyword}:\n#{@scenario_keyword}:")
73
72
  data = feature.parsing_data
74
73
 
75
74
  expect(data.keys).to match_array(['keyword', 'name', 'line', 'description', 'id', 'uri', 'elements', 'tags'])
@@ -77,7 +76,7 @@ describe 'Feature, Integration' do
77
76
  end
78
77
 
79
78
  it 'trims whitespace from its source description' do
80
- source = ['Feature:',
79
+ source = ["#{@feature_keyword}:",
81
80
  ' ',
82
81
  ' description line 1',
83
82
  '',
@@ -86,11 +85,11 @@ describe 'Feature, Integration' do
86
85
  '',
87
86
  '',
88
87
  '',
89
- ' Scenario:']
88
+ " #{@scenario_keyword}:"]
90
89
  source = source.join("\n")
91
90
 
92
91
  feature = clazz.new(source)
93
- description = feature.description.split("\n")
92
+ description = feature.description.split("\n", -1)
94
93
 
95
94
  expect(description).to eq([' description line 1',
96
95
  '',
@@ -113,8 +112,15 @@ describe 'Feature, Integration' do
113
112
 
114
113
  context 'from source text' do
115
114
 
115
+ it "models the feature's keyword" do
116
+ source_text = "#{@feature_keyword}:"
117
+ feature = CukeModeler::Feature.new(source_text)
118
+
119
+ expect(feature.keyword).to eq(@feature_keyword)
120
+ end
121
+
116
122
  it "models the feature's source line" do
117
- source_text = "Feature:"
123
+ source_text = "#{@feature_keyword}:"
118
124
  feature = CukeModeler::Feature.new(source_text)
119
125
 
120
126
  expect(feature.source_line).to eq(1)
@@ -123,34 +129,34 @@ describe 'Feature, Integration' do
123
129
 
124
130
  context 'a filled feature' do
125
131
 
126
- let(:source_text) { '@tag_1 @tag_2
127
- Feature: Feature Foo
132
+ let(:source_text) { "@tag_1 @tag_2
133
+ #{@feature_keyword}: Feature Foo
128
134
 
129
135
  Some feature description.
130
136
 
131
137
  Some more.
132
138
  And some more.
133
139
 
134
- Background: The background
135
- * some setup step
140
+ #{@background_keyword}: The background
141
+ #{@step_keyword} some setup step
136
142
 
137
- Scenario: Scenario 1
138
- * a step
143
+ #{@scenario_keyword}: Scenario 1
144
+ #{@step_keyword} a step
139
145
 
140
- Scenario Outline: Outline 1
141
- * a step
142
- Examples:
146
+ #{@outline_keyword}: Outline 1
147
+ #{@step_keyword} a step
148
+ #{@example_keyword}:
143
149
  | param |
144
150
  | value |
145
151
 
146
- Scenario: Scenario 2
147
- * a step
152
+ #{@scenario_keyword}: Scenario 2
153
+ #{@step_keyword} a step
148
154
 
149
- Scenario Outline: Outline 2
150
- * a step
151
- Examples:
155
+ #{@outline_keyword}: Outline 2
156
+ #{@step_keyword} a step
157
+ #{@example_keyword}:
152
158
  | param |
153
- | value |' }
159
+ | value |" }
154
160
  let(:feature) { clazz.new(source_text) }
155
161
 
156
162
 
@@ -159,7 +165,7 @@ describe 'Feature, Integration' do
159
165
  end
160
166
 
161
167
  it "models the feature's description" do
162
- description = feature.description.split("\n")
168
+ description = feature.description.split("\n", -1)
163
169
 
164
170
  expect(description).to eq([' Some feature description.',
165
171
  '',
@@ -194,7 +200,7 @@ describe 'Feature, Integration' do
194
200
 
195
201
  context 'an empty feature' do
196
202
 
197
- let(:source_text) { 'Feature:' }
203
+ let(:source_text) { "#{@feature_keyword}:" }
198
204
  let(:feature) { clazz.new(source_text) }
199
205
 
200
206
 
@@ -230,18 +236,16 @@ describe 'Feature, Integration' do
230
236
 
231
237
 
232
238
  it 'knows how many test cases it has' do
233
- source_1 = ['Feature: Test feature']
234
- source_1 = source_1.join("\n")
235
-
236
- source_2 = ['Feature: Test feature',
237
- ' Scenario: Test scenario',
238
- ' Scenario Outline: Test outline',
239
- ' * a step',
240
- ' Examples: Test examples',
241
- ' |param|',
242
- ' |value_1|',
243
- ' |value_2|']
244
- source_2 = source_2.join("\n")
239
+ source_1 = "#{@feature_keyword}: Test feature"
240
+
241
+ source_2 = "#{@feature_keyword}: Test feature
242
+ #{@scenario_keyword}: Test scenario
243
+ #{@outline_keyword}: Test outline
244
+ #{@step_keyword} a step
245
+ #{@example_keyword}: Test examples
246
+ |param|
247
+ |value_1|
248
+ |value_2|"
245
249
 
246
250
  feature_1 = clazz.new(source_1)
247
251
  feature_2 = clazz.new(source_2)
@@ -255,8 +259,7 @@ describe 'Feature, Integration' do
255
259
  describe 'getting ancestors' do
256
260
 
257
261
  before(:each) do
258
- source = ['Feature: Test feature']
259
- source = source.join("\n")
262
+ source = "#{@feature_keyword}: Test feature"
260
263
 
261
264
  file_path = "#{@default_file_directory}/feature_test_file.feature"
262
265
  File.open(file_path, 'w') { |file| file.write(source) }
@@ -290,55 +293,54 @@ describe 'Feature, Integration' do
290
293
  describe 'feature output' do
291
294
 
292
295
  it 'can be remade from its own output' do
293
- source = ['@tag1 @tag2 @tag3',
294
- 'Feature: A feature with everything it could have',
295
- '',
296
- 'Including a description',
297
- 'and then some.',
298
- '',
299
- ' Background:',
300
- '',
301
- ' Background',
302
- ' description',
303
- '',
304
- ' * a step',
305
- ' | value1 |',
306
- ' * another step ',
307
- '',
308
- ' @scenario_tag ',
309
- ' Scenario:',
310
- '',
311
- ' Scenario ',
312
- ' description ',
313
- '',
314
- ' * a step ',
315
- ' * another step ',
316
- ' """"',
317
- ' some text ',
318
- ' """',
319
- '',
320
- ' @outline_tag ',
321
- ' Scenario Outline: ',
322
- '',
323
- ' Outline ',
324
- ' description ',
325
- '',
326
- ' * a step ',
327
- ' | value2 |',
328
- ' * another step ',
329
- ' """',
330
- ' some text ',
331
- ' """',
332
- '',
333
- ' @example_tag ',
334
- ' Examples:',
335
- '',
336
- ' Example ',
337
- ' description',
338
- '',
339
- ' | param |',
340
- ' | value |']
341
- source = source.join(" \n")
296
+ source = "@tag1 @tag2 @tag3
297
+ #{@feature_keyword}: A feature with everything it could have
298
+
299
+ Including a description
300
+ and then some.
301
+
302
+ #{@background_keyword}:
303
+
304
+ Background
305
+ description
306
+
307
+ #{@step_keyword} a step
308
+ | value1 |
309
+ #{@step_keyword} another step
310
+
311
+ @scenario_tag
312
+ #{@scenario_keyword}:
313
+
314
+ Scenario
315
+ description
316
+
317
+ #{@step_keyword} a step
318
+ #{@step_keyword} another step
319
+ \"\"\"
320
+ some text
321
+ \"\"\"
322
+
323
+ @outline_tag
324
+ #{@outline_keyword}:
325
+
326
+ Outline
327
+ description
328
+
329
+ #{@step_keyword} a step
330
+ | value2 |
331
+ #{@step_keyword} another step
332
+ \"\"\"
333
+ some text
334
+ \"\"\"
335
+
336
+ @example_tag
337
+ #{@example_keyword}:
338
+
339
+ Example
340
+ description
341
+
342
+ | param |
343
+ | value |"
342
344
  feature = clazz.new(source)
343
345
 
344
346
  feature_output = feature.to_s
@@ -351,35 +353,35 @@ describe 'Feature, Integration' do
351
353
  context 'from source text' do
352
354
 
353
355
  it 'can output an empty feature' do
354
- source = ['Feature:']
356
+ source = ["#{@feature_keyword}:"]
355
357
  source = source.join("\n")
356
358
  feature = clazz.new(source)
357
359
 
358
- feature_output = feature.to_s.split("\n")
360
+ feature_output = feature.to_s.split("\n", -1)
359
361
 
360
- expect(feature_output).to eq(['Feature:'])
362
+ expect(feature_output).to eq(["#{@feature_keyword}:"])
361
363
  end
362
364
 
363
365
  it 'can output a feature that has a name' do
364
- source = ['Feature: test feature']
366
+ source = ["#{@feature_keyword}: test feature"]
365
367
  source = source.join("\n")
366
368
  feature = clazz.new(source)
367
369
 
368
- feature_output = feature.to_s.split("\n")
370
+ feature_output = feature.to_s.split("\n", -1)
369
371
 
370
- expect(feature_output).to eq(['Feature: test feature'])
372
+ expect(feature_output).to eq(["#{@feature_keyword}: test feature"])
371
373
  end
372
374
 
373
375
  it 'can output a feature that has a description' do
374
- source = ['Feature:',
376
+ source = ["#{@feature_keyword}:",
375
377
  'Some description.',
376
378
  'Some more description.']
377
379
  source = source.join("\n")
378
380
  feature = clazz.new(source)
379
381
 
380
- feature_output = feature.to_s.split("\n")
382
+ feature_output = feature.to_s.split("\n", -1)
381
383
 
382
- expect(feature_output).to eq(['Feature:',
384
+ expect(feature_output).to eq(["#{@feature_keyword}:",
383
385
  '',
384
386
  'Some description.',
385
387
  'Some more description.'])
@@ -388,100 +390,100 @@ describe 'Feature, Integration' do
388
390
  it 'can output a feature that has tags' do
389
391
  source = ['@tag1 @tag2',
390
392
  '@tag3',
391
- 'Feature:']
393
+ "#{@feature_keyword}:"]
392
394
  source = source.join("\n")
393
395
  feature = clazz.new(source)
394
396
 
395
- feature_output = feature.to_s.split("\n")
397
+ feature_output = feature.to_s.split("\n", -1)
396
398
 
397
399
  expect(feature_output).to eq(['@tag1 @tag2 @tag3',
398
- 'Feature:'])
400
+ "#{@feature_keyword}:"])
399
401
  end
400
402
 
401
403
  it 'can output a feature that has a background' do
402
- source = ['Feature:',
403
- 'Background:',
404
- '* a step']
404
+ source = ["#{@feature_keyword}:",
405
+ "#{@background_keyword}:",
406
+ "#{@step_keyword} a step"]
405
407
  source = source.join("\n")
406
408
  feature = clazz.new(source)
407
409
 
408
- feature_output = feature.to_s.split("\n")
410
+ feature_output = feature.to_s.split("\n", -1)
409
411
 
410
- expect(feature_output).to eq(['Feature:',
412
+ expect(feature_output).to eq(["#{@feature_keyword}:",
411
413
  '',
412
- ' Background:',
413
- ' * a step'])
414
+ " #{@background_keyword}:",
415
+ " #{@step_keyword} a step"])
414
416
  end
415
417
 
416
418
  it 'can output a feature that has a scenario' do
417
- source = ['Feature:',
418
- 'Scenario:',
419
- '* a step']
419
+ source = ["#{@feature_keyword}:",
420
+ "#{@scenario_keyword}:",
421
+ "#{@step_keyword} a step"]
420
422
  source = source.join("\n")
421
423
  feature = clazz.new(source)
422
424
 
423
- feature_output = feature.to_s.split("\n")
425
+ feature_output = feature.to_s.split("\n", -1)
424
426
 
425
- expect(feature_output).to eq(['Feature:',
427
+ expect(feature_output).to eq(["#{@feature_keyword}:",
426
428
  '',
427
- ' Scenario:',
428
- ' * a step'])
429
+ " #{@scenario_keyword}:",
430
+ " #{@step_keyword} a step"])
429
431
  end
430
432
 
431
433
  it 'can output a feature that has an outline' do
432
- source = ['Feature:',
433
- 'Scenario Outline:',
434
- '* a step',
435
- 'Examples:',
434
+ source = ["#{@feature_keyword}:",
435
+ "#{@outline_keyword}:",
436
+ "#{@step_keyword} a step",
437
+ "#{@example_keyword}:",
436
438
  '|param|',
437
439
  '|value|']
438
440
  source = source.join("\n")
439
441
  feature = clazz.new(source)
440
442
 
441
- feature_output = feature.to_s.split("\n")
443
+ feature_output = feature.to_s.split("\n", -1)
442
444
 
443
- expect(feature_output).to eq(['Feature:',
445
+ expect(feature_output).to eq(["#{@feature_keyword}:",
444
446
  '',
445
- ' Scenario Outline:',
446
- ' * a step',
447
+ " #{@outline_keyword}:",
448
+ " #{@step_keyword} a step",
447
449
  '',
448
- ' Examples:',
450
+ " #{@example_keyword}:",
449
451
  ' | param |',
450
452
  ' | value |'])
451
453
  end
452
454
 
453
455
  it 'can output a feature that has everything' do
454
456
  source = ['@tag1 @tag2 @tag3',
455
- 'Feature: A feature with everything it could have',
457
+ "#{@feature_keyword}: A feature with everything it could have",
456
458
  'Including a description',
457
459
  'and then some.',
458
- 'Background:',
460
+ "#{@background_keyword}:",
459
461
  'Background',
460
462
  'description',
461
- '* a step',
463
+ "#{@step_keyword} a step",
462
464
  '|value1|',
463
- '* another step',
465
+ "#{@step_keyword} another step",
464
466
  '@scenario_tag',
465
- 'Scenario:',
467
+ "#{@scenario_keyword}:",
466
468
  'Scenario',
467
469
  'description',
468
- '* a step',
469
- '* another step',
470
+ "#{@step_keyword} a step",
471
+ "#{@step_keyword} another step",
470
472
  '"""',
471
473
  'some text',
472
474
  '"""',
473
475
  '@outline_tag',
474
- 'Scenario Outline:',
476
+ "#{@outline_keyword}:",
475
477
  'Outline ',
476
478
  'description',
477
- '* a step ',
479
+ "#{@step_keyword} a step ",
478
480
  '|value2|',
479
- '* another step',
481
+ "#{@step_keyword} another step",
480
482
  '"""',
481
483
  'some text',
482
484
  '"""',
483
485
  '@example_tag',
484
- 'Examples:',
486
+ "#{@example_keyword}:",
485
487
  'Example',
486
488
  'description',
487
489
  '|param|',
@@ -489,50 +491,50 @@ describe 'Feature, Integration' do
489
491
  source = source.join("\n")
490
492
  feature = clazz.new(source)
491
493
 
492
- feature_output = feature.to_s.split("\n")
494
+ feature_output = feature.to_s.split("\n", -1)
493
495
 
494
496
  expect(feature_output).to eq(['@tag1 @tag2 @tag3',
495
- 'Feature: A feature with everything it could have',
497
+ "#{@feature_keyword}: A feature with everything it could have",
496
498
  '',
497
499
  'Including a description',
498
500
  'and then some.',
499
501
  '',
500
- ' Background:',
502
+ " #{@background_keyword}:",
501
503
  '',
502
504
  ' Background',
503
505
  ' description',
504
506
  '',
505
- ' * a step',
507
+ " #{@step_keyword} a step",
506
508
  ' | value1 |',
507
- ' * another step',
509
+ " #{@step_keyword} another step",
508
510
  '',
509
511
  ' @scenario_tag',
510
- ' Scenario:',
512
+ " #{@scenario_keyword}:",
511
513
  '',
512
514
  ' Scenario',
513
515
  ' description',
514
516
  '',
515
- ' * a step',
516
- ' * another step',
517
+ " #{@step_keyword} a step",
518
+ " #{@step_keyword} another step",
517
519
  ' """',
518
520
  ' some text',
519
521
  ' """',
520
522
  '',
521
523
  ' @outline_tag',
522
- ' Scenario Outline:',
524
+ " #{@outline_keyword}:",
523
525
  '',
524
526
  ' Outline',
525
527
  ' description',
526
528
  '',
527
- ' * a step',
529
+ " #{@step_keyword} a step",
528
530
  ' | value2 |',
529
- ' * another step',
531
+ " #{@step_keyword} another step",
530
532
  ' """',
531
533
  ' some text',
532
534
  ' """',
533
535
  '',
534
536
  ' @example_tag',
535
- ' Examples:',
537
+ " #{@example_keyword}:",
536
538
  '',
537
539
  ' Example',
538
540
  ' description',