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
@@ -11,19 +11,40 @@ module CukeModeler
11
11
  begin
12
12
  require 'gherkin'
13
13
  rescue LoadError
14
- require 'gherkin/parser'
14
+ begin
15
+ require 'gherkin/parser'
16
+ rescue LoadError
17
+ # Gherkin 6.x
18
+ require 'gherkin/gherkin'
19
+ end
15
20
  end
16
21
 
17
22
 
18
23
  # The *gherkin* gem loads differently and has different grammar rules across major versions. Parsing
19
24
  # will be done with an 'adapter' appropriate to the version of the *gherkin* gem that has been activated.
20
25
 
21
- case Gem.loaded_specs['gherkin'].version.version
26
+ gherkin_version = Gem.loaded_specs['gherkin'].version.version
27
+
28
+ case gherkin_version
29
+ when /^6\./
30
+ require 'gherkin/gherkin'
31
+ require 'cuke_modeler/adapters/gherkin_6_adapter'
32
+
33
+ def self.parsing_method(source_text, filename)
34
+ messages = Gherkin::Gherkin.from_source(filename, source_text, {:default_dialect => CukeModeler::Parsing.dialect}).to_a
35
+
36
+ messages.map(&:to_hash).find { |message| message[:gherkinDocument] }[:gherkinDocument]
37
+ end
38
+
39
+ def self.adapter_class
40
+ CukeModeler::Gherkin6Adapter
41
+ end
42
+
22
43
  when /^[54]\./
23
44
  require 'gherkin/parser'
24
45
  require 'cuke_modeler/adapters/gherkin_4_adapter'
25
46
 
26
-
47
+ # TODO: shouldn't the filename be used?
27
48
  # todo - make these methods private?
28
49
  def self.parsing_method(source_text, _filename)
29
50
  Gherkin::Parser.new.parse(source_text)
@@ -45,8 +66,7 @@ module CukeModeler
45
66
  def self.adapter_class
46
67
  CukeModeler::Gherkin3Adapter
47
68
  end
48
-
49
- else # Assume version 2.x
69
+ when /^2\./
50
70
  require 'stringio'
51
71
  require 'gherkin/formatter/json_formatter'
52
72
  require 'gherkin'
@@ -68,6 +88,9 @@ module CukeModeler
68
88
  CukeModeler::Gherkin2Adapter
69
89
  end
70
90
 
91
+ else
92
+ # TODO: test this
93
+ raise("Unknown Gherkin version: '#{gherkin_version}'")
71
94
  end
72
95
 
73
96
 
@@ -1,4 +1,4 @@
1
1
  module CukeModeler
2
2
  # The gem version
3
- VERSION = '1.3.0'
3
+ VERSION = '1.4.0'
4
4
  end
@@ -6,7 +6,7 @@ Given(/^a feature file model based on "([^"]*)"$/) do |file_name|
6
6
  end
7
7
 
8
8
  And(/^a feature file model based on that file$/) do |code_text|
9
- code_text.gsub!('<file_path>', "'#{@file_path}'")
9
+ code_text = code_text.gsub('<file_path>', "'#{@file_path}'")
10
10
 
11
11
  eval(code_text)
12
12
  end
@@ -13,13 +13,13 @@ When(/^the model is output as a string$/) do |code_text|
13
13
  end
14
14
 
15
15
  And(/^a(?:n)? \w+(?: \w+)? model based on that gherkin$/) do |code_text|
16
- code_text.gsub!('<source_text>', "'#{@source_text}'")
16
+ code_text = code_text.gsub('<source_text>', "'#{@source_text}'")
17
17
 
18
18
  eval(code_text)
19
19
  end
20
20
 
21
21
  Given(/^(?:a|the) (?:directory|feature file) is modeled$/) do |code_text|
22
- code_text.gsub!('<path_to>', @root_test_directory)
22
+ code_text = code_text.gsub('<path_to>', @root_test_directory)
23
23
 
24
24
  eval(code_text)
25
25
  end
@@ -12,7 +12,7 @@ Then(/^all of them can be output as text appropriate to the model type$/) do |co
12
12
  end
13
13
 
14
14
  Then(/^the following text is provided:$/) do |expected_text|
15
- expected_text.sub!('<path_to>', @root_test_directory)
15
+ expected_text = expected_text.sub('<path_to>', @root_test_directory)
16
16
 
17
17
  expect(@output).to eq(expected_text)
18
18
  end
@@ -58,12 +58,13 @@ end
58
58
 
59
59
  Then(/^the model returns "([^"]*)"$/) do |value|
60
60
  value.gsub!('path_to', @root_test_directory) if value.is_a?(String)
61
+ value = value.to_i if value =~ /^\d+$/
61
62
 
62
63
  expect(@result).to eq(value)
63
64
  end
64
65
 
65
66
  Then(/^the model returns$/) do |value|
66
- value.gsub!('path_to', @root_test_directory) if value.is_a?(String)
67
+ value = value.gsub('path_to', @root_test_directory) if value.is_a?(String)
67
68
 
68
69
  expect(@result).to eq(value)
69
70
  end
@@ -1,3 +1,6 @@
1
+ require 'tmpdir'
2
+
3
+
1
4
  module CukeModeler
2
5
  module FileHelper
3
6
 
@@ -7,6 +7,11 @@ gem "gherkin", "~> 2.0"
7
7
 
8
8
  if RUBY_VERSION =~ /^1\./
9
9
 
10
+ if RbConfig::CONFIG['host_os'].downcase =~ /mswin|msys|mingw32/
11
+ gem 'ffi', '< 1.9.15' # The 'ffi' gem, for Windows, requires Ruby 2.x on/after this version
12
+ end
13
+
14
+ gem 'unf_ext', '< 0.0.7.3' # Requires Ruby 2.x on/after this version
10
15
  gem 'tins', '< 1.7' # The 'tins' gem requires Ruby 2.x on/after this version
11
16
  gem 'json', '< 2.0' # The 'json' gem drops pre-Ruby 2.x support on/after this version
12
17
  gem 'term-ansicolor', '< 1.4' # The 'term-ansicolor' gem requires Ruby 2.x on/after this version
@@ -14,6 +19,8 @@ if RUBY_VERSION =~ /^1\./
14
19
  if RUBY_VERSION =~ /^1\.8/
15
20
  gem 'cucumber', '~> 1.0' # Ruby 1.8.x support dropped after this version
16
21
  gem 'rake', '< 11.0' # Ruby 1.8.x support dropped after this version
22
+ else
23
+ gem 'rake', '< 12.3.0' # Ruby 1.9.x support dropped after this version
17
24
  end
18
25
 
19
26
  elsif RUBY_VERSION =~ /^2\./
@@ -7,9 +7,15 @@ gem "gherkin", "~> 3.0"
7
7
 
8
8
  if RUBY_VERSION =~ /^1\./
9
9
 
10
+ if RbConfig::CONFIG['host_os'].downcase =~ /mswin|msys|mingw32/
11
+ gem 'ffi', '< 1.9.15' # The 'ffi' gem, for Windows, requires Ruby 2.x on/after this version
12
+ end
13
+
14
+ gem 'unf_ext', '< 0.0.7.3' # Requires Ruby 2.x on/after this version
10
15
  gem 'tins', '< 1.7' # The 'tins' gem requires Ruby 2.x on/after this version
11
16
  gem 'json', '< 2.0' # The 'json' gem drops pre-Ruby 2.x support on/after this version
12
17
  gem 'term-ansicolor', '< 1.4' # The 'term-ansicolor' gem requires Ruby 2.x on/after this version
18
+ gem 'rake', '< 12.3.0' # Ruby 1.9.x support dropped after this version
13
19
 
14
20
  elsif RUBY_VERSION =~ /^2\./
15
21
 
@@ -7,9 +7,16 @@ gem "gherkin", "~> 4.0"
7
7
 
8
8
  if RUBY_VERSION =~ /^1\./
9
9
 
10
+ if RbConfig::CONFIG['host_os'].downcase =~ /mswin|msys|mingw32/
11
+ gem 'ffi', '< 1.9.15' # The 'ffi' gem, for Windows, requires Ruby 2.x on/after this version
12
+ end
13
+
14
+ gem 'unf_ext', '< 0.0.7.3' # Requires Ruby 2.x on/after this version
10
15
  gem 'tins', '< 1.7' # The 'tins' gem requires Ruby 2.x on/after this version
11
16
  gem 'json', '< 2.0' # The 'json' gem drops pre-Ruby 2.x support on/after this version
12
17
  gem 'term-ansicolor', '< 1.4' # The 'term-ansicolor' gem requires Ruby 2.x on/after this version
18
+ gem 'rake', '< 12.3.0' # Ruby 1.9.x support dropped after this version
19
+ gem 'cucumber', '< 3.0.0' # Ruby 1.9.x support dropped after this version
13
20
 
14
21
  elsif RUBY_VERSION =~ /^2\./
15
22
 
@@ -7,9 +7,15 @@ gem "gherkin", "~> 5.0"
7
7
 
8
8
  if RUBY_VERSION =~ /^1\./
9
9
 
10
+ if RbConfig::CONFIG['host_os'].downcase =~ /mswin|msys|mingw32/
11
+ gem 'ffi', '< 1.9.15' # The 'ffi' gem, for Windows, requires Ruby 2.x on/after this version
12
+ end
13
+
14
+ gem 'unf_ext', '< 0.0.7.3' # Requires Ruby 2.x on/after this version
10
15
  gem 'tins', '< 1.7' # The 'tins' gem requires Ruby 2.x on/after this version
11
16
  gem 'json', '< 2.0' # The 'json' gem drops pre-Ruby 2.x support on/after this version
12
17
  gem 'term-ansicolor', '< 1.4' # The 'term-ansicolor' gem requires Ruby 2.x on/after this version
18
+ gem 'rake', '< 12.3.0' # Ruby 1.9.x support dropped after this version
13
19
 
14
20
  elsif RUBY_VERSION =~ /^2\./
15
21
 
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec :path => "../../"
4
+
5
+ gem "gherkin", "~> 6.0"
6
+ gem 'cucumber', '~>4.0.rc' # TODO: Upgrade to Cucumber 4.0 when it is finally released
7
+
8
+ if RUBY_VERSION =~ /^2\.[23456789]/
9
+ gem 'test-unit'
10
+ end
@@ -15,7 +15,7 @@ describe 'Background, Integration' do
15
15
  describe 'unique behavior' do
16
16
 
17
17
  it 'can be instantiated with the minimum viable Gherkin' do
18
- source = "#{@background_keyword}:"
18
+ source = "#{BACKGROUND_KEYWORD}:"
19
19
 
20
20
  expect { clazz.new(source) }.to_not raise_error
21
21
  end
@@ -37,8 +37,16 @@ describe 'Background, Integration' do
37
37
  end
38
38
  end
39
39
 
40
- it 'stores the original data generated by the parsing adapter', :gherkin4 => true do
41
- background = clazz.new("#{@background_keyword}: test background\ndescription\n#{@step_keyword} a step")
40
+ it 'stores the original data generated by the parsing adapter', :gherkin6 => true do
41
+ background = clazz.new("#{BACKGROUND_KEYWORD}: test background\ndescription\n#{STEP_KEYWORD} a step")
42
+ data = background.parsing_data
43
+
44
+ expect(data.keys).to match_array([:background, :rule, :scenario])
45
+ expect(data[:background][:name]).to eq('test background')
46
+ end
47
+
48
+ it 'stores the original data generated by the parsing adapter', :gherkin4_5 => true do
49
+ background = clazz.new("#{BACKGROUND_KEYWORD}: test background\ndescription\n#{STEP_KEYWORD} a step")
42
50
  data = background.parsing_data
43
51
 
44
52
  expect(data.keys).to match_array([:type, :location, :keyword, :name, :steps, :description])
@@ -46,7 +54,7 @@ describe 'Background, Integration' do
46
54
  end
47
55
 
48
56
  it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
49
- background = clazz.new("#{@background_keyword}: test background\ndescription\n#{@step_keyword} a step")
57
+ background = clazz.new("#{BACKGROUND_KEYWORD}: test background\ndescription\n#{STEP_KEYWORD} a step")
50
58
  data = background.parsing_data
51
59
 
52
60
  expect(data.keys).to match_array([:type, :location, :keyword, :name, :steps, :description])
@@ -54,7 +62,7 @@ describe 'Background, Integration' do
54
62
  end
55
63
 
56
64
  it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
57
- background = clazz.new("#{@background_keyword}: test background\ndescription\n#{@step_keyword} a step")
65
+ background = clazz.new("#{BACKGROUND_KEYWORD}: test background\ndescription\n#{STEP_KEYWORD} a step")
58
66
  data = background.parsing_data
59
67
 
60
68
  expect(data.keys).to match_array(['keyword', 'name', 'line', 'description', 'steps', 'type'])
@@ -62,14 +70,14 @@ describe 'Background, Integration' do
62
70
  end
63
71
 
64
72
  it 'provides a descriptive filename when being parsed from stand alone text' do
65
- source = "bad background text \n #{@background_keyword}:\n #{@step_keyword} a step\n @foo "
73
+ source = "bad background text \n #{BACKGROUND_KEYWORD}:\n #{STEP_KEYWORD} a step\n @foo "
66
74
 
67
75
  expect { clazz.new(source) }.to raise_error(/'cuke_modeler_stand_alone_background\.feature'/)
68
76
  end
69
77
 
70
78
  it 'properly sets its child models' do
71
- source = "#{@background_keyword}: Test background
72
- #{@step_keyword} a step"
79
+ source = "#{BACKGROUND_KEYWORD}: Test background
80
+ #{STEP_KEYWORD} a step"
73
81
 
74
82
  background = clazz.new(source)
75
83
  step = background.steps.first
@@ -78,7 +86,7 @@ describe 'Background, Integration' do
78
86
  end
79
87
 
80
88
  it 'trims whitespace from its source description' do
81
- source = ["#{@background_keyword}:",
89
+ source = ["#{BACKGROUND_KEYWORD}:",
82
90
  ' ',
83
91
  ' description line 1',
84
92
  '',
@@ -87,7 +95,7 @@ describe 'Background, Integration' do
87
95
  '',
88
96
  '',
89
97
  '',
90
- " #{@step_keyword} a step"]
98
+ " #{STEP_KEYWORD} a step"]
91
99
  source = source.join("\n")
92
100
 
93
101
  background = clazz.new(source)
@@ -108,10 +116,10 @@ describe 'Background, Integration' do
108
116
 
109
117
 
110
118
  let(:test_directory) { CukeModeler::FileHelper.create_directory }
111
- let(:source_gherkin) { "#{@feature_keyword}: Test feature
119
+ let(:source_gherkin) { "#{FEATURE_KEYWORD}: Test feature
112
120
 
113
- #{@background_keyword}: Test background
114
- #{@step_keyword} a step"
121
+ #{BACKGROUND_KEYWORD}: Test background
122
+ #{STEP_KEYWORD} a step"
115
123
  }
116
124
 
117
125
  let(:directory_model) { CukeModeler::Directory.new(test_directory) }
@@ -149,19 +157,19 @@ describe 'Background, Integration' do
149
157
 
150
158
  context 'from source text' do
151
159
 
152
- let(:source_text) { "#{@background_keyword}:" }
160
+ let(:source_text) { "#{BACKGROUND_KEYWORD}:" }
153
161
  let(:background) { clazz.new(source_text) }
154
162
 
155
163
 
156
164
  it "models the background's keyword" do
157
- expect(background.keyword).to eq("#{@background_keyword}")
165
+ expect(background.keyword).to eq("#{BACKGROUND_KEYWORD}")
158
166
  end
159
167
 
160
168
  it "models the background's source line" do
161
- source_text = "#{@feature_keyword}:
169
+ source_text = "#{FEATURE_KEYWORD}:
162
170
 
163
- #{@background_keyword}: foo
164
- #{@step_keyword} step"
171
+ #{BACKGROUND_KEYWORD}: foo
172
+ #{STEP_KEYWORD} step"
165
173
  background = CukeModeler::Feature.new(source_text).background
166
174
 
167
175
  expect(background.source_line).to eq(3)
@@ -169,15 +177,15 @@ describe 'Background, Integration' do
169
177
 
170
178
  context 'a filled background' do
171
179
 
172
- let(:source_text) { "#{@background_keyword}: Background name
180
+ let(:source_text) { "#{BACKGROUND_KEYWORD}: Background name
173
181
 
174
182
  Background description.
175
183
 
176
184
  Some more.
177
185
  Even more.
178
186
 
179
- #{@step_keyword} a step
180
- #{@step_keyword} another step" }
187
+ #{STEP_KEYWORD} a step
188
+ #{STEP_KEYWORD} another step" }
181
189
  let(:background) { clazz.new(source_text) }
182
190
 
183
191
 
@@ -204,7 +212,7 @@ describe 'Background, Integration' do
204
212
 
205
213
  context 'an empty background' do
206
214
 
207
- let(:source_text) { "#{@background_keyword}:" }
215
+ let(:source_text) { "#{BACKGROUND_KEYWORD}:" }
208
216
  let(:background) { clazz.new(source_text) }
209
217
 
210
218
 
@@ -230,19 +238,19 @@ describe 'Background, Integration' do
230
238
  describe 'comparison' do
231
239
 
232
240
  it 'is equal to a background with the same steps' do
233
- source = "#{@background_keyword}:
234
- #{@step_keyword} step 1
235
- #{@step_keyword} step 2"
241
+ source = "#{BACKGROUND_KEYWORD}:
242
+ #{STEP_KEYWORD} step 1
243
+ #{STEP_KEYWORD} step 2"
236
244
  background_1 = clazz.new(source)
237
245
 
238
- source = "#{@background_keyword}:
239
- #{@step_keyword} step 1
240
- #{@step_keyword} step 2"
246
+ source = "#{BACKGROUND_KEYWORD}:
247
+ #{STEP_KEYWORD} step 1
248
+ #{STEP_KEYWORD} step 2"
241
249
  background_2 = clazz.new(source)
242
250
 
243
- source = "#{@background_keyword}:
244
- #{@step_keyword} step 2
245
- #{@step_keyword} step 1"
251
+ source = "#{BACKGROUND_KEYWORD}:
252
+ #{STEP_KEYWORD} step 2
253
+ #{STEP_KEYWORD} step 1"
246
254
  background_3 = clazz.new(source)
247
255
 
248
256
 
@@ -251,19 +259,19 @@ describe 'Background, Integration' do
251
259
  end
252
260
 
253
261
  it 'is equal to a scenario with the same steps' do
254
- source = "#{@background_keyword}:
255
- #{@step_keyword} step 1
256
- #{@step_keyword} step 2"
262
+ source = "#{BACKGROUND_KEYWORD}:
263
+ #{STEP_KEYWORD} step 1
264
+ #{STEP_KEYWORD} step 2"
257
265
  background = clazz.new(source)
258
266
 
259
- source = "#{@scenario_keyword}:
260
- #{@step_keyword} step 1
261
- #{@step_keyword} step 2"
267
+ source = "#{SCENARIO_KEYWORD}:
268
+ #{STEP_KEYWORD} step 1
269
+ #{STEP_KEYWORD} step 2"
262
270
  scenario_1 = CukeModeler::Scenario.new(source)
263
271
 
264
- source = "#{@scenario_keyword}:
265
- #{@step_keyword} step 2
266
- #{@step_keyword} step 1"
272
+ source = "#{SCENARIO_KEYWORD}:
273
+ #{STEP_KEYWORD} step 2
274
+ #{STEP_KEYWORD} step 1"
267
275
  scenario_2 = CukeModeler::Scenario.new(source)
268
276
 
269
277
 
@@ -272,23 +280,23 @@ describe 'Background, Integration' do
272
280
  end
273
281
 
274
282
  it 'is equal to an outline with the same steps' do
275
- source = "#{@background_keyword}:
276
- #{@step_keyword} step 1
277
- #{@step_keyword} step 2"
283
+ source = "#{BACKGROUND_KEYWORD}:
284
+ #{STEP_KEYWORD} step 1
285
+ #{STEP_KEYWORD} step 2"
278
286
  background = clazz.new(source)
279
287
 
280
- source = "#{@outline_keyword}:
281
- #{@step_keyword} step 1
282
- #{@step_keyword} step 2
283
- #{@example_keyword}:
288
+ source = "#{OUTLINE_KEYWORD}:
289
+ #{STEP_KEYWORD} step 1
290
+ #{STEP_KEYWORD} step 2
291
+ #{EXAMPLE_KEYWORD}:
284
292
  | param |
285
293
  | value |"
286
294
  outline_1 = CukeModeler::Outline.new(source)
287
295
 
288
- source = "#{@outline_keyword}:
289
- #{@step_keyword} step 2
290
- #{@step_keyword} step 1
291
- #{@example_keyword}:
296
+ source = "#{OUTLINE_KEYWORD}:
297
+ #{STEP_KEYWORD} step 2
298
+ #{STEP_KEYWORD} step 1
299
+ #{EXAMPLE_KEYWORD}:
292
300
  | param |
293
301
  | value |"
294
302
  outline_2 = CukeModeler::Outline.new(source)
@@ -304,14 +312,14 @@ describe 'Background, Integration' do
304
312
  describe 'background output' do
305
313
 
306
314
  it 'can be remade from its own output' do
307
- source = "#{@background_keyword}: A background with everything it could have
315
+ source = "#{BACKGROUND_KEYWORD}: A background with everything it could have
308
316
 
309
317
  Including a description
310
318
  and then some.
311
319
 
312
- #{@step_keyword} a step
320
+ #{STEP_KEYWORD} a step
313
321
  | value |
314
- #{@step_keyword} another step
322
+ #{STEP_KEYWORD} another step
315
323
  \"\"\"
316
324
  some string
317
325
  \"\"\""
@@ -327,27 +335,27 @@ describe 'Background, Integration' do
327
335
  context 'from source text' do
328
336
 
329
337
  it 'can output an empty background' do
330
- source = ["#{@background_keyword}:"]
338
+ source = ["#{BACKGROUND_KEYWORD}:"]
331
339
  source = source.join("\n")
332
340
  background = clazz.new(source)
333
341
 
334
342
  background_output = background.to_s.split("\n", -1)
335
343
 
336
- expect(background_output).to eq(["#{@background_keyword}:"])
344
+ expect(background_output).to eq(["#{BACKGROUND_KEYWORD}:"])
337
345
  end
338
346
 
339
347
  it 'can output a background that has a name' do
340
- source = ["#{@background_keyword}: test background"]
348
+ source = ["#{BACKGROUND_KEYWORD}: test background"]
341
349
  source = source.join("\n")
342
350
  background = clazz.new(source)
343
351
 
344
352
  background_output = background.to_s.split("\n", -1)
345
353
 
346
- expect(background_output).to eq(["#{@background_keyword}: test background"])
354
+ expect(background_output).to eq(["#{BACKGROUND_KEYWORD}: test background"])
347
355
  end
348
356
 
349
357
  it 'can output a background that has a description' do
350
- source = ["#{@background_keyword}:",
358
+ source = ["#{BACKGROUND_KEYWORD}:",
351
359
  'Some description.',
352
360
  'Some more description.']
353
361
  source = source.join("\n")
@@ -355,17 +363,17 @@ describe 'Background, Integration' do
355
363
 
356
364
  background_output = background.to_s.split("\n", -1)
357
365
 
358
- expect(background_output).to eq(["#{@background_keyword}:",
366
+ expect(background_output).to eq(["#{BACKGROUND_KEYWORD}:",
359
367
  '',
360
368
  'Some description.',
361
369
  'Some more description.'])
362
370
  end
363
371
 
364
372
  it 'can output a background that has steps' do
365
- source = ["#{@background_keyword}:",
366
- "#{@step_keyword} a step",
373
+ source = ["#{BACKGROUND_KEYWORD}:",
374
+ "#{STEP_KEYWORD} a step",
367
375
  '|value|',
368
- "#{@step_keyword} another step",
376
+ "#{STEP_KEYWORD} another step",
369
377
  '"""',
370
378
  'some string',
371
379
  '"""']
@@ -374,22 +382,22 @@ describe 'Background, Integration' do
374
382
 
375
383
  background_output = background.to_s.split("\n", -1)
376
384
 
377
- expect(background_output).to eq(["#{@background_keyword}:",
378
- " #{@step_keyword} a step",
385
+ expect(background_output).to eq(["#{BACKGROUND_KEYWORD}:",
386
+ " #{STEP_KEYWORD} a step",
379
387
  ' | value |',
380
- " #{@step_keyword} another step",
388
+ " #{STEP_KEYWORD} another step",
381
389
  ' """',
382
390
  ' some string',
383
391
  ' """'])
384
392
  end
385
393
 
386
394
  it 'can output a background that has everything' do
387
- source = ["#{@background_keyword}: A background with everything it could have",
395
+ source = ["#{BACKGROUND_KEYWORD}: A background with everything it could have",
388
396
  'Including a description',
389
397
  'and then some.',
390
- "#{@step_keyword} a step",
398
+ "#{STEP_KEYWORD} a step",
391
399
  '|value|',
392
- "#{@step_keyword} another step",
400
+ "#{STEP_KEYWORD} another step",
393
401
  '"""',
394
402
  'some string',
395
403
  '"""']
@@ -398,14 +406,14 @@ describe 'Background, Integration' do
398
406
 
399
407
  background_output = background.to_s.split("\n", -1)
400
408
 
401
- expect(background_output).to eq(["#{@background_keyword}: A background with everything it could have",
409
+ expect(background_output).to eq(["#{BACKGROUND_KEYWORD}: A background with everything it could have",
402
410
  '',
403
411
  'Including a description',
404
412
  'and then some.',
405
413
  '',
406
- " #{@step_keyword} a step",
414
+ " #{STEP_KEYWORD} a step",
407
415
  ' | value |',
408
- " #{@step_keyword} another step",
416
+ " #{STEP_KEYWORD} another step",
409
417
  ' """',
410
418
  ' some string',
411
419
  ' """'])