cuke_modeler 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -49,7 +49,7 @@ describe 'Directory, Integration' do
49
49
  feature_files.each do |file_name|
50
50
  # Some versions of Gherkin require feature content to be present in feature files
51
51
  File.open("#{directory_path}/#{file_name}", "w") { |file|
52
- file.puts('Feature: Test feature')
52
+ file.puts("#{@feature_keyword}: Test feature")
53
53
  }
54
54
  end
55
55
 
@@ -79,7 +79,7 @@ describe 'Directory, Integration' do
79
79
  context 'with no feature files' do
80
80
 
81
81
  before(:each) do
82
- FileUtils.rm(Dir.glob("#{directory_path}/*"))
82
+ FileUtils.rm(Dir.glob("#{directory_path}/#{@step_keyword}"))
83
83
  end
84
84
 
85
85
 
@@ -114,7 +114,7 @@ describe 'Directory, Integration' do
114
114
  context 'with no directories' do
115
115
 
116
116
  before(:each) do
117
- FileUtils.rm_r(Dir.glob("#{directory_path}/*"))
117
+ FileUtils.rm_r(Dir.glob("#{directory_path}/#{@step_keyword}"))
118
118
  end
119
119
 
120
120
 
@@ -153,7 +153,7 @@ describe 'Directory, Integration' do
153
153
 
154
154
  FileUtils.mkdir(nested_directory)
155
155
  File.open(file_path, "w") { |file|
156
- file.puts('Feature: Test feature')
156
+ file.puts("#{@feature_keyword}: Test feature")
157
157
  }
158
158
 
159
159
  directory = clazz.new(@default_file_directory)
@@ -63,16 +63,15 @@ describe 'DocString, Integration' do
63
63
  describe 'getting ancestors' do
64
64
 
65
65
  before(:each) do
66
- source = ['Feature: Test feature',
67
- '',
68
- ' Scenario: Test test',
69
- ' * a big step:',
70
- ' """',
71
- ' a',
72
- ' doc',
73
- ' string',
74
- ' """']
75
- source = source.join("\n")
66
+ source = "#{@feature_keyword}: Test feature
67
+
68
+ #{@scenario_keyword}: Test test
69
+ #{@step_keyword} a big step:
70
+ \"\"\"
71
+ a
72
+ doc
73
+ string
74
+ \"\"\""
76
75
 
77
76
  file_path = "#{@default_file_directory}/doc_string_test_file.feature"
78
77
  File.open(file_path, 'w') { |file| file.write(source) }
@@ -103,15 +102,15 @@ describe 'DocString, Integration' do
103
102
  context 'a doc string that is part of a scenario' do
104
103
 
105
104
  before(:each) do
106
- source = 'Feature: Test feature
105
+ source = "#{@feature_keyword}: Test feature
107
106
 
108
- Scenario: Test test
109
- * a big step:
110
- """
107
+ #{@scenario_keyword}: Test test
108
+ #{@step_keyword} a big step:
109
+ \"\"\"
111
110
  a
112
111
  doc
113
112
  string
114
- """'
113
+ \"\"\""
115
114
 
116
115
  file_path = "#{@default_file_directory}/doc_string_test_file.feature"
117
116
  File.open(file_path, 'w') { |file| file.write(source) }
@@ -132,18 +131,18 @@ describe 'DocString, Integration' do
132
131
  context 'a doc string that is part of an outline' do
133
132
 
134
133
  before(:each) do
135
- source = 'Feature: Test feature
134
+ source = "#{@feature_keyword}: Test feature
136
135
 
137
- Scenario Outline: Test outline
138
- * a big step:
139
- """
136
+ #{@outline_keyword}: Test outline
137
+ #{@step_keyword} a big step:
138
+ \"\"\"
140
139
  a
141
140
  doc
142
141
  string
143
- """
144
- Examples:
142
+ \"\"\"
143
+ #{@example_keyword}:
145
144
  | param |
146
- | value |'
145
+ | value |"
147
146
 
148
147
  file_path = "#{@default_file_directory}/doc_string_test_file.feature"
149
148
  File.open(file_path, 'w') { |file| file.write(source) }
@@ -164,15 +163,15 @@ describe 'DocString, Integration' do
164
163
  context 'a doc string that is part of a background' do
165
164
 
166
165
  before(:each) do
167
- source = 'Feature: Test feature
166
+ source = "#{@feature_keyword}: Test feature
168
167
 
169
- Background: Test background
170
- * a big step:
171
- """
168
+ #{@background_keyword}: Test background
169
+ #{@step_keyword} a big step:
170
+ \"\"\"
172
171
  a
173
172
  doc
174
173
  string
175
- """'
174
+ \"\"\""
176
175
 
177
176
  file_path = "#{@default_file_directory}/doc_string_test_file.feature"
178
177
  File.open(file_path, 'w') { |file| file.write(source) }
@@ -244,13 +243,13 @@ describe 'DocString, Integration' do
244
243
  end
245
244
 
246
245
  it "models the doc string's source line" do
247
- source_text = 'Feature:
246
+ source_text = "#{@feature_keyword}:
248
247
 
249
- Scenario:
250
- * step
251
- """
248
+ #{@scenario_keyword}:
249
+ #{@step_keyword} step
250
+ \"\"\"
252
251
  foo
253
- """'
252
+ \"\"\""
254
253
  doc_string = CukeModeler::Feature.new(source_text).tests.first.steps.first.block
255
254
 
256
255
  expect(doc_string.source_line).to eq(5)
@@ -265,7 +264,7 @@ describe 'DocString, Integration' do
265
264
 
266
265
  it 'can be remade from its own output' do
267
266
  source = ['"""" the type',
268
- '* a step',
267
+ "#{@step_keyword} a step",
269
268
  ' \"\"\"',
270
269
  ' that also has a doc string',
271
270
  ' \"\"\"',
@@ -288,7 +287,7 @@ describe 'DocString, Integration' do
288
287
  source = source.join("\n")
289
288
  doc_string = clazz.new(source)
290
289
 
291
- doc_string_output = doc_string.to_s.split("\n")
290
+ doc_string_output = doc_string.to_s.split("\n", -1)
292
291
 
293
292
  expect(doc_string_output).to eq(['"""', '"""'])
294
293
  end
@@ -299,7 +298,7 @@ describe 'DocString, Integration' do
299
298
  source = source.join("\n")
300
299
  doc_string = clazz.new(source)
301
300
 
302
- doc_string_output = doc_string.to_s.split("\n")
301
+ doc_string_output = doc_string.to_s.split("\n", -1)
303
302
 
304
303
  expect(doc_string_output).to eq(['""" foo',
305
304
  '"""'])
@@ -312,7 +311,7 @@ describe 'DocString, Integration' do
312
311
  source = source.join("\n")
313
312
  doc_string = clazz.new(source)
314
313
 
315
- doc_string_output = doc_string.to_s.split("\n")
314
+ doc_string_output = doc_string.to_s.split("\n", -1)
316
315
 
317
316
  expect(doc_string_output).to eq(['"""',
318
317
  'foo',
@@ -332,7 +331,7 @@ describe 'DocString, Integration' do
332
331
  source = source.join("\n")
333
332
  doc_string = clazz.new(source)
334
333
 
335
- doc_string_output = doc_string.to_s.split("\n")
334
+ doc_string_output = doc_string.to_s.split("\n", -1)
336
335
 
337
336
  expect(doc_string_output).to eq(['"""',
338
337
  'a \"\"\"',
@@ -350,7 +349,7 @@ describe 'DocString, Integration' do
350
349
  source = source.join("\n")
351
350
  doc_string = clazz.new(source)
352
351
 
353
- doc_string_output = doc_string.to_s.split("\n")
352
+ doc_string_output = doc_string.to_s.split("\n", -1)
354
353
 
355
354
  expect(doc_string_output).to eq(['"""',
356
355
  'change these \"\"\"\"\"\"',
@@ -367,7 +366,7 @@ describe 'DocString, Integration' do
367
366
  source = source.join("\n")
368
367
  doc_string = clazz.new(source)
369
368
 
370
- doc_string_output = doc_string.to_s.split("\n")
369
+ doc_string_output = doc_string.to_s.split("\n", -1)
371
370
 
372
371
  expect(doc_string_output).to eq(['""" type foo',
373
372
  '\"\"\"',
@@ -16,31 +16,28 @@ describe 'Example, Integration' do
16
16
  describe 'unique behavior' do
17
17
 
18
18
  it 'can be instantiated with the minimum viable Gherkin', :gherkin4 => true do
19
- source = ['Examples:']
20
- source = source.join("\n")
19
+ source = "#{@example_keyword}:"
21
20
 
22
21
  expect { @model = clazz.new(source) }.to_not raise_error
23
22
  end
24
23
 
25
24
  it 'can be instantiated with the minimum viable Gherkin', :gherkin3 => true do
26
- source = ['Examples:',
27
- '|param|',
28
- '|value|']
29
- source = source.join("\n")
25
+ source = "#{@example_keyword}:
26
+ |param|
27
+ |value|"
30
28
 
31
29
  expect { @model = clazz.new(source) }.to_not raise_error
32
30
  end
33
31
 
34
32
  it 'can be instantiated with the minimum viable Gherkin', :gherkin2 => true do
35
- source = ['Examples:',
36
- '|param|']
37
- source = source.join("\n")
33
+ source = "#{@example_keyword}:
34
+ |param|"
38
35
 
39
36
  expect { @model = clazz.new(source) }.to_not raise_error
40
37
  end
41
38
 
42
39
  it 'stores the original data generated by the parsing adapter', :gherkin4 => true do
43
- example = clazz.new("@tag\nExamples: test example\ndescription\n|param|\n|value|")
40
+ example = clazz.new("@tag\n#{@example_keyword}: test example\ndescription\n|param|\n|value|")
44
41
  data = example.parsing_data
45
42
 
46
43
  expect(data.keys).to match_array([:type, :tags, :location, :keyword, :name, :tableHeader, :tableBody, :description])
@@ -48,7 +45,7 @@ describe 'Example, Integration' do
48
45
  end
49
46
 
50
47
  it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
51
- example = clazz.new("@tag\nExamples: test example\ndescription\n|param|\n|value|")
48
+ example = clazz.new("@tag\n#{@example_keyword}: test example\ndescription\n|param|\n|value|")
52
49
  data = example.parsing_data
53
50
 
54
51
  expect(data.keys).to match_array([:type, :tags, :location, :keyword, :name, :tableHeader, :tableBody, :description])
@@ -56,7 +53,7 @@ describe 'Example, Integration' do
56
53
  end
57
54
 
58
55
  it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
59
- example = clazz.new("@tag\nExamples: test example\ndescription\n|param|\n|value|")
56
+ example = clazz.new("@tag\n#{@example_keyword}: test example\ndescription\n|param|\n|value|")
60
57
  data = example.parsing_data
61
58
 
62
59
  expect(data.keys).to match_array(['keyword', 'name', 'line', 'description', 'id', 'rows', 'tags'])
@@ -70,7 +67,7 @@ describe 'Example, Integration' do
70
67
  end
71
68
 
72
69
  it 'trims whitespace from its source description' do
73
- source = ['Examples:',
70
+ source = ["#{@example_keyword}:",
74
71
  ' ',
75
72
  ' description line 1',
76
73
  '',
@@ -84,7 +81,7 @@ describe 'Example, Integration' do
84
81
  source = source.join("\n")
85
82
 
86
83
  example = clazz.new(source)
87
- description = example.description.split("\n")
84
+ description = example.description.split("\n", -1)
88
85
 
89
86
  expect(description).to eq([' description line 1',
90
87
  '',
@@ -97,12 +94,21 @@ describe 'Example, Integration' do
97
94
 
98
95
  context 'from source text' do
99
96
 
97
+ let(:source_text) { "#{@example_keyword}:" }
98
+ let(:example) { clazz.new(source_text) }
99
+
100
+
101
+ # gherkin 2.x/3.x does not accept incomplete examples
102
+ it "models the example's keyword", :gherkin2 => false, :gherkin3 => false do
103
+ expect(example.keyword).to eq("#{@example_keyword}")
104
+ end
105
+
100
106
  it "models the example's source line" do
101
- source_text = "Feature:
107
+ source_text = "#{@feature_keyword}:
102
108
 
103
- Scenario Outline:
104
- * step
105
- Examples:
109
+ #{@outline_keyword}:
110
+ #{@step_keyword} step
111
+ #{@example_keyword}:
106
112
  | param |
107
113
  | value |"
108
114
  example = CukeModeler::Feature.new(source_text).tests.first.examples.first
@@ -114,7 +120,7 @@ describe 'Example, Integration' do
114
120
  context 'a filled example' do
115
121
 
116
122
  let(:source_text) { "@tag1 @tag2 @tag3
117
- Examples: test example
123
+ #{@example_keyword}: test example
118
124
 
119
125
  Some example description.
120
126
 
@@ -131,7 +137,7 @@ describe 'Example, Integration' do
131
137
  end
132
138
 
133
139
  it "models the example's description" do
134
- description = example.description.split("\n")
140
+ description = example.description.split("\n", -1)
135
141
 
136
142
  expect(description).to eq([' Some example description.',
137
143
  '',
@@ -160,7 +166,7 @@ describe 'Example, Integration' do
160
166
  # gherkin 2.x/3.x does not accept incomplete examples
161
167
  context 'an empty example', :gherkin2 => false, :gherkin3 => false do
162
168
 
163
- let(:source_text) { 'Examples:' }
169
+ let(:source_text) { "#{@example_keyword}:" }
164
170
  let(:example) { clazz.new(source_text) }
165
171
 
166
172
 
@@ -188,11 +194,10 @@ describe 'Example, Integration' do
188
194
 
189
195
 
190
196
  it 'properly sets its child models' do
191
- source = ['@a_tag',
192
- 'Examples:',
193
- ' | param |',
194
- ' | value 1 |']
195
- source = source.join("\n")
197
+ source = "@a_tag
198
+ #{@example_keyword}:
199
+ | param |
200
+ | value 1 |"
196
201
 
197
202
  example = clazz.new(source)
198
203
  rows = example.rows
@@ -204,7 +209,7 @@ describe 'Example, Integration' do
204
209
  end
205
210
 
206
211
  it 'does not include the parameter row when accessing argument rows' do
207
- source = "Examples:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
212
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
208
213
  example = clazz.new(source)
209
214
 
210
215
  rows = example.argument_rows
@@ -214,7 +219,7 @@ describe 'Example, Integration' do
214
219
  end
215
220
 
216
221
  it 'does not include argument rows when accessing the parameter row' do
217
- source = "Examples:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
222
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
218
223
  example = clazz.new(source)
219
224
 
220
225
  row = example.parameter_row
@@ -227,7 +232,7 @@ describe 'Example, Integration' do
227
232
  describe 'adding rows' do
228
233
 
229
234
  it 'can add a new row as a hash, string values' do
230
- source = "Examples:\n|param1|param2|\n|value1|value2|"
235
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|"
231
236
  example = clazz.new(source)
232
237
 
233
238
  new_row = {'param1' => 'value3', 'param2' => 'value4'}
@@ -238,7 +243,7 @@ describe 'Example, Integration' do
238
243
  end
239
244
 
240
245
  it 'can add a new row as a hash, non-string values' do
241
- source = "Examples:\n|param1|param2|\n|value1|value2|"
246
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|"
242
247
  example = clazz.new(source)
243
248
 
244
249
  new_row = {:param1 => 'value3', 'param2' => 4}
@@ -249,7 +254,7 @@ describe 'Example, Integration' do
249
254
  end
250
255
 
251
256
  it 'can add a new row as a hash, random key order' do
252
- source = "Examples:\n|param1|param2|\n|value1|value2|"
257
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|"
253
258
  example = clazz.new(source)
254
259
 
255
260
  new_row = {'param2' => 'value4', 'param1' => 'value3'}
@@ -260,7 +265,7 @@ describe 'Example, Integration' do
260
265
  end
261
266
 
262
267
  it 'can add a new row as an array, string values' do
263
- source = "Examples:\n|param1|param2|\n|value1|value2|"
268
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|"
264
269
  example = clazz.new(source)
265
270
 
266
271
  new_row = ['value3', 'value4']
@@ -271,7 +276,7 @@ describe 'Example, Integration' do
271
276
  end
272
277
 
273
278
  it 'can add a new row as an array, non-string values' do
274
- source = "Examples:\n|param1|param2|param3|\n|value1|value2|value3|"
279
+ source = "#{@example_keyword}:\n|param1|param2|param3|\n|value1|value2|value3|"
275
280
  example = clazz.new(source)
276
281
 
277
282
  new_row = [:value4, 5, 'value6']
@@ -282,7 +287,7 @@ describe 'Example, Integration' do
282
287
  end
283
288
 
284
289
  it 'can only use a Hash or an Array to add a new row' do
285
- source = "Examples:\n|param|\n|value|"
290
+ source = "#{@example_keyword}:\n|param|\n|value|"
286
291
  example = clazz.new(source)
287
292
 
288
293
  expect { example.add_row({}) }.to_not raise_error
@@ -291,7 +296,7 @@ describe 'Example, Integration' do
291
296
  end
292
297
 
293
298
  it 'trims whitespace from added rows' do
294
- source = "Examples:\n|param1|param2|\n|value1|value2|"
299
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|"
295
300
  example = clazz.new(source)
296
301
 
297
302
  hash_row = {'param1' => 'value3 ', 'param2' => ' value4'}
@@ -315,7 +320,7 @@ describe 'Example, Integration' do
315
320
  end
316
321
 
317
322
  it 'does not modify its row input' do
318
- source = "Examples:\n|param1|param2|\n|value1|value2|"
323
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|"
319
324
  example = clazz.new(source)
320
325
 
321
326
  array_row = ['value1'.freeze, 'value2'.freeze].freeze
@@ -331,7 +336,7 @@ describe 'Example, Integration' do
331
336
  describe 'removing rows' do
332
337
 
333
338
  it 'can remove an existing row as a hash' do
334
- source = "Examples:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
339
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
335
340
  example = clazz.new(source)
336
341
 
337
342
  old_row = {'param1' => 'value3', 'param2' => 'value4'}
@@ -342,7 +347,7 @@ describe 'Example, Integration' do
342
347
  end
343
348
 
344
349
  it 'can remove an existing row as a hash, random key order' do
345
- source = "Examples:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
350
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
346
351
  example = clazz.new(source)
347
352
 
348
353
  old_row = {'param2' => 'value4', 'param1' => 'value3'}
@@ -353,7 +358,7 @@ describe 'Example, Integration' do
353
358
  end
354
359
 
355
360
  it 'can remove an existing row as an array' do
356
- source = "Examples:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
361
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|\n|value3|value4|"
357
362
  example = clazz.new(source)
358
363
 
359
364
  old_row = ['value3', 'value4']
@@ -370,7 +375,7 @@ describe 'Example, Integration' do
370
375
  end
371
376
 
372
377
  it 'trims whitespace from removed rows' do
373
- source = "Examples:\n|param1|param2|\n|value1|value2|\n|value3|value4|\n|value5|value6|"
378
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|\n|value3|value4|\n|value5|value6|"
374
379
  example = clazz.new(source)
375
380
 
376
381
  # These will affect different rows
@@ -393,7 +398,7 @@ describe 'Example, Integration' do
393
398
  end
394
399
 
395
400
  it 'will not remove the parameter row' do
396
- source = "Examples:\n|param1|param2|\n|value1|value2|"
401
+ source = "#{@example_keyword}:\n|param1|param2|\n|value1|value2|"
397
402
  example = clazz.new(source)
398
403
 
399
404
  hash_row = {'param1' => 'param1 ', 'param2' => ' param2'}
@@ -416,14 +421,13 @@ describe 'Example, Integration' do
416
421
  describe 'getting ancestors' do
417
422
 
418
423
  before(:each) do
419
- source = ['Feature: Test feature',
420
- '',
421
- ' Scenario Outline: Test test',
422
- ' * a step',
423
- ' Examples: Test example',
424
- ' | a param |',
425
- ' | a value |']
426
- source = source.join("\n")
424
+ source = "#{@feature_keyword}: Test feature
425
+
426
+ #{@outline_keyword}: Test test
427
+ #{@step_keyword} a step
428
+ #{@example_keyword}: Test example
429
+ | a param |
430
+ | a value |"
427
431
 
428
432
  file_path = "#{@default_file_directory}/example_test_file.feature"
429
433
  File.open(file_path, 'w') { |file| file.write(source) }
@@ -454,13 +458,13 @@ describe 'Example, Integration' do
454
458
  context 'an example that is part of an outline' do
455
459
 
456
460
  before(:each) do
457
- source = 'Feature: Test feature
461
+ source = "#{@feature_keyword}: Test feature
458
462
 
459
- Scenario Outline: Test outline
460
- * a step
461
- Examples:
463
+ #{@outline_keyword}: Test outline
464
+ #{@step_keyword} a step
465
+ #{@example_keyword}:
462
466
  | param |
463
- | value |'
467
+ | value |"
464
468
 
465
469
  file_path = "#{@default_file_directory}/example_test_file.feature"
466
470
  File.open(file_path, 'w') { |file| file.write(source) }
@@ -490,16 +494,15 @@ describe 'Example, Integration' do
490
494
  describe 'example output' do
491
495
 
492
496
  it 'can be remade from its own output' do
493
- source = ['@tag1 @tag2 @tag3',
494
- 'Examples: with everything it could have',
495
- '',
496
- 'Some description.',
497
- 'Some more description.',
498
- '',
499
- ' | param1 | param2 |',
500
- ' | value1 | value2 |',
501
- ' | value3 | value4 |']
502
- source = source.join("\n")
497
+ source = "@tag1 @tag2 @tag3
498
+ #{@example_keyword}: with everything it could have
499
+
500
+ Some description.
501
+ Some more description.
502
+
503
+ | param1 | param2 |
504
+ | value1 | value2 |
505
+ | value3 | value4 |"
503
506
  example = clazz.new(source)
504
507
 
505
508
  example_output = example.to_s
@@ -514,16 +517,16 @@ describe 'Example, Integration' do
514
517
  # and it is possible that during that process it messes up the cell's output.
515
518
 
516
519
  it 'can correctly output a row that has special characters in it' do
517
- source = ['Examples:',
520
+ source = ["#{@example_keyword}:",
518
521
  ' | param with \| |',
519
522
  ' | a value with \| and \\\\ |',
520
523
  ' | a value with \\\\ |']
521
524
  source = source.join("\n")
522
525
  example = clazz.new(source)
523
526
 
524
- example_output = example.to_s.split("\n")
527
+ example_output = example.to_s.split("\n", -1)
525
528
 
526
- expect(example_output).to eq(['Examples:',
529
+ expect(example_output).to eq(["#{@example_keyword}:",
527
530
  ' | param with \| |',
528
531
  ' | a value with \| and \\\\ |',
529
532
  ' | a value with \\\\ |'])
@@ -534,37 +537,37 @@ describe 'Example, Integration' do
534
537
 
535
538
  # gherkin 2.x/3.x does not accept incomplete examples
536
539
  it 'can output an empty example', :gherkin2 => false, :gherkin3 => false do
537
- source = ['Examples:']
540
+ source = ["#{@example_keyword}:"]
538
541
  source = source.join("\n")
539
542
  example = clazz.new(source)
540
543
 
541
- example_output = example.to_s.split("\n")
544
+ example_output = example.to_s.split("\n", -1)
542
545
 
543
- expect(example_output).to eq(['Examples:'])
546
+ expect(example_output).to eq(["#{@example_keyword}:"])
544
547
  end
545
548
 
546
549
  # gherkin 2.x/3.x does not accept incomplete examples
547
550
  it 'can output an example that has a name', :gherkin2 => false, :gherkin3 => false do
548
- source = ['Examples: test example']
551
+ source = ["#{@example_keyword}: test example"]
549
552
  source = source.join("\n")
550
553
  example = clazz.new(source)
551
554
 
552
- example_output = example.to_s.split("\n")
555
+ example_output = example.to_s.split("\n", -1)
553
556
 
554
- expect(example_output).to eq(['Examples: test example'])
557
+ expect(example_output).to eq(["#{@example_keyword}: test example"])
555
558
  end
556
559
 
557
560
  # gherkin 2.x/3.x does not accept incomplete examples
558
561
  it 'can output an example that has a description', :gherkin2 => false, :gherkin3 => false do
559
- source = ['Examples:',
562
+ source = ["#{@example_keyword}:",
560
563
  'Some description.',
561
564
  'Some more description.']
562
565
  source = source.join("\n")
563
566
  example = clazz.new(source)
564
567
 
565
- example_output = example.to_s.split("\n")
568
+ example_output = example.to_s.split("\n", -1)
566
569
 
567
- expect(example_output).to eq(['Examples:',
570
+ expect(example_output).to eq(["#{@example_keyword}:",
568
571
  '',
569
572
  'Some description.',
570
573
  'Some more description.'])
@@ -573,28 +576,28 @@ describe 'Example, Integration' do
573
576
 
574
577
  # gherkin 3.x does not accept incomplete examples
575
578
  it 'can output an example that has a single row', :gherkin3 => false do
576
- source = ['Examples:',
579
+ source = ["#{@example_keyword}:",
577
580
  '|param1|param2|']
578
581
  source = source.join("\n")
579
582
  example = clazz.new(source)
580
583
 
581
- example_output = example.to_s.split("\n")
584
+ example_output = example.to_s.split("\n", -1)
582
585
 
583
- expect(example_output).to eq(['Examples:',
586
+ expect(example_output).to eq(["#{@example_keyword}:",
584
587
  ' | param1 | param2 |'])
585
588
  end
586
589
 
587
590
  it 'can output an example that has multiple rows' do
588
- source = ['Examples:',
591
+ source = ["#{@example_keyword}:",
589
592
  '|param1|param2|',
590
593
  '|value1|value2|',
591
594
  '|value3|value4|']
592
595
  source = source.join("\n")
593
596
  example = clazz.new(source)
594
597
 
595
- example_output = example.to_s.split("\n")
598
+ example_output = example.to_s.split("\n", -1)
596
599
 
597
- expect(example_output).to eq(['Examples:',
600
+ expect(example_output).to eq(["#{@example_keyword}:",
598
601
  ' | param1 | param2 |',
599
602
  ' | value1 | value2 |',
600
603
  ' | value3 | value4 |'])
@@ -603,17 +606,17 @@ describe 'Example, Integration' do
603
606
  it 'can output an example that has tags' do
604
607
  source = ['@tag1',
605
608
  '@tag2 @tag3',
606
- 'Examples:',
609
+ "#{@example_keyword}:",
607
610
  '|param1|param2|',
608
611
  '|value1|value2|',
609
612
  '|value3|value4|']
610
613
  source = source.join("\n")
611
614
  example = clazz.new(source)
612
615
 
613
- example_output = example.to_s.split("\n")
616
+ example_output = example.to_s.split("\n", -1)
614
617
 
615
618
  expect(example_output).to eq(['@tag1 @tag2 @tag3',
616
- 'Examples:',
619
+ "#{@example_keyword}:",
617
620
  ' | param1 | param2 |',
618
621
  ' | value1 | value2 |',
619
622
  ' | value3 | value4 |'])
@@ -622,7 +625,7 @@ describe 'Example, Integration' do
622
625
  it 'can output an example that has everything' do
623
626
  source = ['@tag1',
624
627
  '@tag2 @tag3',
625
- 'Examples: with everything it could have',
628
+ "#{@example_keyword}: with everything it could have",
626
629
  'Some description.',
627
630
  'Some more description.',
628
631
  '|param1|param2|',
@@ -631,10 +634,10 @@ describe 'Example, Integration' do
631
634
  source = source.join("\n")
632
635
  example = clazz.new(source)
633
636
 
634
- example_output = example.to_s.split("\n")
637
+ example_output = example.to_s.split("\n", -1)
635
638
 
636
639
  expect(example_output).to eq(['@tag1 @tag2 @tag3',
637
- 'Examples: with everything it could have',
640
+ "#{@example_keyword}: with everything it could have",
638
641
  '',
639
642
  'Some description.',
640
643
  'Some more description.',
@@ -645,16 +648,15 @@ describe 'Example, Integration' do
645
648
  end
646
649
 
647
650
  it 'buffers row cells based on the longest value in a column' do
648
- source = ['Examples:',
649
- '|parameter 1| x|',
650
- '|y|value 1|',
651
- '|a|b|']
652
- source = source.join("\n")
651
+ source = "#{@example_keyword}:
652
+ |parameter 1| x|
653
+ |y|value 1|
654
+ |a|b|"
653
655
  example = clazz.new(source)
654
656
 
655
- example_output = example.to_s.split("\n")
657
+ example_output = example.to_s.split("\n", -1)
656
658
 
657
- expect(example_output).to eq(['Examples:',
659
+ expect(example_output).to eq(["#{@example_keyword}:",
658
660
  ' | parameter 1 | x |',
659
661
  ' | y | value 1 |',
660
662
  ' | a | b |'])