cuke_modeler 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.simplecov +1 -2
- data/.travis.yml +4 -3
- data/Gemfile +1 -1
- data/History.md +5 -0
- data/README.md +2 -1
- data/Rakefile +19 -0
- data/appveyor.yml +19 -18
- data/cuke_modeler.gemspec +1 -1
- data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +1 -1
- data/lib/cuke_modeler/parsing.rb +1 -1
- data/lib/cuke_modeler/version.rb +1 -1
- data/testing/cucumber/features/analysis/test_comparison.feature +1 -4
- data/testing/cucumber/features/modeling/background_modeling.feature +1 -2
- data/testing/cucumber/features/modeling/background_output.feature +1 -2
- data/testing/cucumber/features/modeling/cell_modeling.feature +1 -2
- data/testing/cucumber/features/modeling/comment_modeling.feature +1 -2
- data/testing/cucumber/features/modeling/comment_output.feature +1 -2
- data/testing/cucumber/features/modeling/directory_modeling.feature +1 -4
- data/testing/cucumber/features/modeling/directory_output.feature +1 -2
- data/testing/cucumber/features/modeling/doc_string_modeling.feature +1 -3
- data/testing/cucumber/features/modeling/doc_string_output.feature +1 -2
- data/testing/cucumber/features/modeling/example_modeling.feature +1 -3
- data/testing/cucumber/features/modeling/example_output.feature +1 -2
- data/testing/cucumber/features/modeling/feature_file_modeling.feature +1 -3
- data/testing/cucumber/features/modeling/feature_file_output.feature +1 -2
- data/testing/cucumber/features/modeling/feature_modeling.feature +2 -5
- data/testing/cucumber/features/modeling/feature_output.feature +1 -2
- data/testing/cucumber/features/modeling/model_output.feature +1 -3
- data/testing/cucumber/features/modeling/model_structure.feature +3 -9
- data/testing/cucumber/features/modeling/outline_modeling.feature +1 -2
- data/testing/cucumber/features/modeling/outline_output.feature +1 -2
- data/testing/cucumber/features/modeling/row_modeling.feature +1 -2
- data/testing/cucumber/features/modeling/row_output.feature +1 -2
- data/testing/cucumber/features/modeling/scenario_modeling.feature +1 -2
- data/testing/cucumber/features/modeling/scenario_output.feature +1 -2
- data/testing/cucumber/features/modeling/step_modeling.feature +1 -2
- data/testing/cucumber/features/modeling/step_output.feature +1 -2
- data/testing/cucumber/features/modeling/table_modeling.feature +1 -2
- data/testing/cucumber/features/modeling/table_output.feature +1 -2
- data/testing/cucumber/features/modeling/tag_modeling.feature +1 -2
- data/testing/cucumber/features/modeling/tag_output.feature +1 -2
- data/testing/cucumber/step_definitions/directory_steps.rb +1 -1
- data/testing/cucumber/step_definitions/feature_file_steps.rb +1 -1
- data/testing/cucumber/step_definitions/modeling_steps.rb +1 -1
- data/testing/cucumber/step_definitions/setup_steps.rb +4 -6
- data/testing/cucumber/step_definitions/verification_steps.rb +3 -3
- data/testing/cucumber/support/env.rb +7 -14
- data/testing/file_helper.rb +44 -0
- data/testing/gemfiles/gherkin5.gemfile +20 -0
- data/testing/rspec/spec/integration/background_integration_spec.rb +17 -15
- data/testing/rspec/spec/integration/cell_integration_spec.rb +69 -79
- data/testing/rspec/spec/integration/comment_integration_spec.rb +16 -15
- data/testing/rspec/spec/integration/directory_integration_spec.rb +46 -55
- data/testing/rspec/spec/integration/doc_string_integration_spec.rb +73 -80
- data/testing/rspec/spec/integration/example_integration_spec.rb +53 -36
- data/testing/rspec/spec/integration/feature_file_integration_spec.rb +27 -42
- data/testing/rspec/spec/integration/feature_integration_spec.rb +12 -11
- data/testing/rspec/spec/integration/gherkin_2_adapter_spec.rb +14 -16
- data/testing/rspec/spec/integration/gherkin_3_adapter_spec.rb +14 -16
- data/testing/rspec/spec/integration/gherkin_4_adapter_spec.rb +14 -16
- data/testing/rspec/spec/integration/outline_integration_spec.rb +20 -18
- data/testing/rspec/spec/integration/parsing_integration_spec.rb +1 -1
- data/testing/rspec/spec/integration/row_integration_spec.rb +57 -64
- data/testing/rspec/spec/integration/scenario_integration_spec.rb +17 -15
- data/testing/rspec/spec/integration/step_integration_spec.rb +48 -55
- data/testing/rspec/spec/integration/table_integration_spec.rb +54 -61
- data/testing/rspec/spec/integration/tag_integration_spec.rb +61 -67
- data/testing/rspec/spec/spec_helper.rb +5 -16
- data/testing/rspec/spec/unit/background_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/cell_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/comment_unit_spec.rb +0 -6
- data/testing/rspec/spec/unit/directory_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/doc_string_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/example_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/feature_file_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/feature_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/outline_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/row_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/scenario_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/shared/stringifiable_models_unit_specs.rb +1 -1
- data/testing/rspec/spec/unit/step_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/table_unit_spec.rb +0 -5
- data/testing/rspec/spec/unit/tag_unit_spec.rb +0 -5
- data/todo.txt +0 -4
- metadata +6 -4
@@ -1,7 +1,6 @@
|
|
1
1
|
Feature: Row output
|
2
2
|
|
3
|
-
A row model's string output is a Gherkin representation of itself. As such, output from a row model can be used as
|
4
|
-
input for the same kind of model.
|
3
|
+
A row model's string output is a Gherkin representation of itself. As such, output from a row model can be used as input for the same kind of model.
|
5
4
|
|
6
5
|
|
7
6
|
Scenario: Outputting a row model
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Feature: Scenario modeling
|
2
2
|
|
3
|
-
Scenario models represent a Scenario portion of a feature. They expose several attributes of the scenario
|
4
|
-
that they represent, as well as containing models for the steps and tags that are present in that scenario.
|
3
|
+
Scenario models represent a Scenario portion of a feature. They expose several attributes of the scenario that they represent, as well as containing models for the steps and tags that are present in that scenario.
|
5
4
|
|
6
5
|
|
7
6
|
Background:
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Feature: Scenario output
|
2
2
|
|
3
|
-
A scenario model's string output is a Gherkin representation of itself. As such, output from a scenario model can be used as
|
4
|
-
input for the same kind of model.
|
3
|
+
A scenario model's string output is a Gherkin representation of itself. As such, output from a scenario model can be used as input for the same kind of model.
|
5
4
|
|
6
5
|
|
7
6
|
Scenario: Outputting a scenario model
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Feature: Step modeling
|
2
2
|
|
3
|
-
Step models represent represent the a step in a scenario, outline, or background. They expose several attributes
|
4
|
-
of the step that they represent.
|
3
|
+
Step models represent represent the a step in a scenario, outline, or background. They expose several attributes of the step that they represent.
|
5
4
|
|
6
5
|
|
7
6
|
Background:
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Feature: Step output
|
2
2
|
|
3
|
-
A step model's string output is a Gherkin representation of itself. As such, output from a step model can be used as
|
4
|
-
input for the same kind of model.
|
3
|
+
A step model's string output is a Gherkin representation of itself. As such, output from a step model can be used as input for the same kind of model.
|
5
4
|
|
6
5
|
|
7
6
|
Scenario: Outputting a step model
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Feature: Table modeling
|
2
2
|
|
3
|
-
Table models represent represent the table argument to a step. They expose several attributes of the table
|
4
|
-
that they represent.
|
3
|
+
Table models represent represent the table argument to a step. They expose several attributes of the table that they represent.
|
5
4
|
|
6
5
|
|
7
6
|
Background:
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Feature: Table output
|
2
2
|
|
3
|
-
A table model's string output is a Gherkin representation of itself. As such, output from a table model can be used as
|
4
|
-
input for the same kind of model.
|
3
|
+
A table model's string output is a Gherkin representation of itself. As such, output from a table model can be used as input for the same kind of model.
|
5
4
|
|
6
5
|
|
7
6
|
Scenario: Outputting a table model
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Feature: Tag modeling
|
2
2
|
|
3
|
-
Tag models represent a tag portion of a feature. They expose several attributes of the tag
|
4
|
-
that they represent.
|
3
|
+
Tag models represent a tag portion of a feature. They expose several attributes of the tag that they represent.
|
5
4
|
|
6
5
|
|
7
6
|
Background:
|
@@ -1,7 +1,6 @@
|
|
1
1
|
Feature: Tag output
|
2
2
|
|
3
|
-
A tag model's string output is a Gherkin representation of itself. As such, output from a tag model can be used as
|
4
|
-
input for the same kind of model.
|
3
|
+
A tag model's string output is a Gherkin representation of itself. As such, output from a tag model can be used as input for the same kind of model.
|
5
4
|
|
6
5
|
|
7
6
|
Scenario: Outputting a tag model
|
@@ -1,5 +1,5 @@
|
|
1
1
|
Given(/^a directory model based on "([^"]*)"$/) do |directory_name|
|
2
|
-
directory_path = "#{@
|
2
|
+
directory_path = "#{@root_test_directory}/#{directory_name}"
|
3
3
|
FileUtils.mkdir(directory_path) unless File.exists?(directory_path)
|
4
4
|
|
5
5
|
@model = CukeModeler::Directory.new(directory_path)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
Given(/^a feature file model based on "([^"]*)"$/) do |file_name|
|
2
|
-
file_path = "#{@
|
2
|
+
file_path = "#{@root_test_directory}/#{file_name}"
|
3
3
|
File.open(file_path, 'w') { |file| file.puts "Feature:" } unless File.exists?(file_path)
|
4
4
|
|
5
5
|
@model = CukeModeler::FeatureFile.new(file_path)
|
@@ -19,7 +19,7 @@ And(/^a(?:n)? \w+(?: \w+)? model based on that gherkin$/) do |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>', @
|
22
|
+
code_text.gsub!('<path_to>', @root_test_directory)
|
23
23
|
|
24
24
|
eval(code_text)
|
25
25
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
Given /^(?:a|the) directory "([^"]*)"$/ do |directory_name|
|
2
|
-
@test_directory = "#{@
|
2
|
+
@test_directory = "#{@root_test_directory}/#{directory_name}"
|
3
3
|
|
4
4
|
FileUtils.mkdir(@test_directory) unless File.exists?(@test_directory)
|
5
5
|
end
|
6
6
|
|
7
7
|
And(/^(?:a|the) file "([^"]*)"$/) do |file_name|
|
8
|
-
file_path = "#{@
|
8
|
+
file_path = "#{@root_test_directory}/#{file_name}"
|
9
9
|
|
10
10
|
# Some versions of Gherkin require feature content to be present in feature files
|
11
11
|
if file_name =~ /\.feature/
|
@@ -18,7 +18,7 @@ And(/^(?:a|the) file "([^"]*)"$/) do |file_name|
|
|
18
18
|
end
|
19
19
|
|
20
20
|
And(/^the file "([^"]*)":$/) do |file_name, file_text|
|
21
|
-
file_path = "#{@
|
21
|
+
file_path = "#{@root_test_directory}/#{file_name}"
|
22
22
|
|
23
23
|
File.open(file_path, 'w') { |file| file.write(file_text) }
|
24
24
|
end
|
@@ -28,7 +28,5 @@ Given(/^the following gherkin:$/) do |text|
|
|
28
28
|
end
|
29
29
|
|
30
30
|
Given(/^a feature file with the following gherkin:$/) do |file_text|
|
31
|
-
@file_path =
|
32
|
-
|
33
|
-
File.open(@file_path, 'w') { |file| file.write(file_text) }
|
31
|
+
@file_path = CukeModeler::FileHelper.create_feature_file(:text => file_text)
|
34
32
|
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>', @
|
15
|
+
expected_text.sub!('<path_to>', @root_test_directory)
|
16
16
|
|
17
17
|
expect(@output).to eq(expected_text)
|
18
18
|
end
|
@@ -57,13 +57,13 @@ Then(/^all of them can be created without further context$/) do |code_text|
|
|
57
57
|
end
|
58
58
|
|
59
59
|
Then(/^the model returns "([^"]*)"$/) do |value|
|
60
|
-
value.gsub!('path_to', @
|
60
|
+
value.gsub!('path_to', @root_test_directory) if value.is_a?(String)
|
61
61
|
|
62
62
|
expect(@result).to eq(value)
|
63
63
|
end
|
64
64
|
|
65
65
|
Then(/^the model returns$/) do |value|
|
66
|
-
value.gsub!('path_to', @
|
66
|
+
value.gsub!('path_to', @root_test_directory) if value.is_a?(String)
|
67
67
|
|
68
68
|
expect(@result).to eq(value)
|
69
69
|
end
|
@@ -10,13 +10,12 @@ this_dir = File.dirname(__FILE__)
|
|
10
10
|
|
11
11
|
require "#{this_dir}/../../../lib/cuke_modeler"
|
12
12
|
|
13
|
+
require "#{this_dir}/../../file_helper"
|
14
|
+
|
13
15
|
|
14
16
|
Before do
|
15
17
|
begin
|
16
|
-
@
|
17
|
-
@default_feature_file_name = 'test_feature.feature'
|
18
|
-
|
19
|
-
FileUtils.mkdir(@default_file_directory)
|
18
|
+
@root_test_directory = CukeModeler::FileHelper.create_directory
|
20
19
|
rescue => e
|
21
20
|
$stdout.puts 'Problem caught in Before hook!'
|
22
21
|
$stdout.puts "Type: #{e.class}"
|
@@ -24,14 +23,8 @@ Before do
|
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
FileUtils.
|
30
|
-
rescue => e
|
31
|
-
$stdout.puts 'Problem caught in After hook!'
|
32
|
-
$stdout.puts "Type: #{e.class}"
|
33
|
-
$stdout.puts "Message: #{e.message}"
|
26
|
+
at_exit {
|
27
|
+
CukeModeler::FileHelper.created_directories.each do |dir_path|
|
28
|
+
FileUtils.remove_entry(dir_path, true)
|
34
29
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
30
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module CukeModeler
|
2
|
+
module FileHelper
|
3
|
+
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def create_feature_file(options = {})
|
7
|
+
options[:text] ||= 'Feature:'
|
8
|
+
options[:name] ||= 'test_file'
|
9
|
+
|
10
|
+
create_file(:text => options[:text], :name => options[:name], :extension => '.feature', :directory => options[:directory])
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_file(options = {})
|
14
|
+
options[:text] ||= ''
|
15
|
+
options[:name] ||= 'test_file'
|
16
|
+
options[:extension] ||= '.txt'
|
17
|
+
options[:directory] ||= create_directory
|
18
|
+
|
19
|
+
file_path = "#{options[:directory]}/#{options[:name]}#{options[:extension]}"
|
20
|
+
File.open(file_path, 'w') { |file| file.write(options[:text]) }
|
21
|
+
|
22
|
+
file_path
|
23
|
+
end
|
24
|
+
|
25
|
+
def created_directories
|
26
|
+
@created_directories ||= []
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_directory(options = {})
|
30
|
+
options[:name] ||= 'test_directory'
|
31
|
+
options[:directory] ||= Dir.mktmpdir
|
32
|
+
|
33
|
+
path = "#{options[:directory]}/#{options[:name]}"
|
34
|
+
|
35
|
+
Dir::mkdir(path)
|
36
|
+
created_directories << options[:directory]
|
37
|
+
|
38
|
+
path
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gemspec :path => "../../"
|
4
|
+
gem "gherkin", "~> 5.0"
|
5
|
+
|
6
|
+
# cuke_modeler can play with pretty much any version of these but they all play differently with Ruby
|
7
|
+
|
8
|
+
if RUBY_VERSION =~ /^1\./
|
9
|
+
|
10
|
+
gem 'tins', '< 1.7' # The 'tins' gem requires Ruby 2.x on/after this version
|
11
|
+
gem 'json', '< 2.0' # The 'json' gem drops pre-Ruby 2.x support on/after this version
|
12
|
+
gem 'term-ansicolor', '< 1.4' # The 'term-ansicolor' gem requires Ruby 2.x on/after this version
|
13
|
+
|
14
|
+
elsif RUBY_VERSION =~ /^2\./
|
15
|
+
|
16
|
+
if RUBY_VERSION =~ /^2\.[23456789]/
|
17
|
+
gem 'test-unit'
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -103,39 +103,41 @@ describe 'Background, Integration' do
|
|
103
103
|
describe 'getting ancestors' do
|
104
104
|
|
105
105
|
before(:each) do
|
106
|
-
|
106
|
+
CukeModeler::FileHelper.create_feature_file(:text => source_gherkin, :name => 'background_test_file', :directory => test_directory)
|
107
|
+
end
|
107
108
|
|
108
|
-
#{@background_keyword}: Test background
|
109
|
-
#{@step_keyword} a step"
|
110
109
|
|
111
|
-
|
112
|
-
|
113
|
-
|
110
|
+
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
111
|
+
let(:source_gherkin) { "#{@feature_keyword}: Test feature
|
112
|
+
|
113
|
+
#{@background_keyword}: Test background
|
114
|
+
#{@step_keyword} a step"
|
115
|
+
}
|
114
116
|
|
115
|
-
let(:
|
116
|
-
let(:
|
117
|
+
let(:directory_model) { CukeModeler::Directory.new(test_directory) }
|
118
|
+
let(:background_model) { directory_model.feature_files.first.feature.background }
|
117
119
|
|
118
120
|
|
119
121
|
it 'can get its directory' do
|
120
|
-
ancestor =
|
122
|
+
ancestor = background_model.get_ancestor(:directory)
|
121
123
|
|
122
|
-
expect(ancestor).to equal(
|
124
|
+
expect(ancestor).to equal(directory_model)
|
123
125
|
end
|
124
126
|
|
125
127
|
it 'can get its feature file' do
|
126
|
-
ancestor =
|
128
|
+
ancestor = background_model.get_ancestor(:feature_file)
|
127
129
|
|
128
|
-
expect(ancestor).to equal(
|
130
|
+
expect(ancestor).to equal(directory_model.feature_files.first)
|
129
131
|
end
|
130
132
|
|
131
133
|
it 'can get its feature' do
|
132
|
-
ancestor =
|
134
|
+
ancestor = background_model.get_ancestor(:feature)
|
133
135
|
|
134
|
-
expect(ancestor).to equal(
|
136
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature)
|
135
137
|
end
|
136
138
|
|
137
139
|
it 'returns nil if it does not have the requested type of ancestor' do
|
138
|
-
ancestor =
|
140
|
+
ancestor = background_model.get_ancestor(:example)
|
139
141
|
|
140
142
|
expect(ancestor).to be_nil
|
141
143
|
end
|
@@ -72,73 +72,72 @@ describe 'Cell, Integration' do
|
|
72
72
|
describe 'getting ancestors' do
|
73
73
|
|
74
74
|
before(:each) do
|
75
|
-
|
75
|
+
CukeModeler::FileHelper.create_feature_file(:text => source_gherkin, :name => 'cell_test_file', :directory => test_directory)
|
76
|
+
end
|
76
77
|
|
77
|
-
#{@scenario_keyword}: Test test
|
78
|
-
#{@step_keyword} a step
|
79
|
-
| a value |"
|
80
78
|
|
81
|
-
|
82
|
-
|
83
|
-
|
79
|
+
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
80
|
+
let(:source_gherkin) { "#{@feature_keyword}: Test feature
|
81
|
+
|
82
|
+
#{@scenario_keyword}: Test test
|
83
|
+
#{@step_keyword} a step
|
84
|
+
| a value |"
|
85
|
+
}
|
84
86
|
|
85
|
-
let(:
|
86
|
-
let(:
|
87
|
+
let(:directory_model) { CukeModeler::Directory.new(test_directory) }
|
88
|
+
let(:cell_model) { directory_model.feature_files.first.feature.tests.first.steps.first.block.rows.first.cells.first }
|
87
89
|
|
88
90
|
|
89
91
|
it 'can get its directory' do
|
90
|
-
ancestor =
|
92
|
+
ancestor = cell_model.get_ancestor(:directory)
|
91
93
|
|
92
|
-
expect(ancestor).to equal(
|
94
|
+
expect(ancestor).to equal(directory_model)
|
93
95
|
end
|
94
96
|
|
95
97
|
it 'can get its feature file' do
|
96
|
-
ancestor =
|
98
|
+
ancestor = cell_model.get_ancestor(:feature_file)
|
97
99
|
|
98
|
-
expect(ancestor).to equal(
|
100
|
+
expect(ancestor).to equal(directory_model.feature_files.first)
|
99
101
|
end
|
100
102
|
|
101
103
|
it 'can get its feature' do
|
102
|
-
ancestor =
|
104
|
+
ancestor = cell_model.get_ancestor(:feature)
|
103
105
|
|
104
|
-
expect(ancestor).to equal(
|
106
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature)
|
105
107
|
end
|
106
108
|
|
107
109
|
context 'a cell that is part of an outline' do
|
108
110
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
file_path = "#{@default_file_directory}/cell_test_file.feature"
|
119
|
-
File.open(file_path, 'w') { |file| file.write(source) }
|
120
|
-
end
|
111
|
+
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
112
|
+
let(:source_gherkin) { "#{@feature_keyword}: Test feature
|
113
|
+
|
114
|
+
#{@outline_keyword}: Test outline
|
115
|
+
#{@step_keyword} a step
|
116
|
+
#{@example_keyword}:
|
117
|
+
| param |
|
118
|
+
| value |"
|
119
|
+
}
|
121
120
|
|
122
|
-
let(:
|
123
|
-
let(:
|
121
|
+
let(:directory_model) { CukeModeler::Directory.new(test_directory) }
|
122
|
+
let(:cell_model) { directory_model.feature_files.first.feature.tests.first.examples.first.rows.first.cells.first }
|
124
123
|
|
125
124
|
|
126
125
|
it 'can get its outline' do
|
127
|
-
ancestor =
|
126
|
+
ancestor = cell_model.get_ancestor(:outline)
|
128
127
|
|
129
|
-
expect(ancestor).to equal(
|
128
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature.tests.first)
|
130
129
|
end
|
131
130
|
|
132
131
|
it 'can get its example' do
|
133
|
-
ancestor =
|
132
|
+
ancestor = cell_model.get_ancestor(:example)
|
134
133
|
|
135
|
-
expect(ancestor).to equal(
|
134
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature.tests.first.examples.first)
|
136
135
|
end
|
137
136
|
|
138
137
|
it 'can get its row' do
|
139
|
-
ancestor =
|
138
|
+
ancestor = cell_model.get_ancestor(:row)
|
140
139
|
|
141
|
-
expect(ancestor).to equal(
|
140
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature.tests.first.examples.first.rows.first)
|
142
141
|
end
|
143
142
|
|
144
143
|
end
|
@@ -146,93 +145,84 @@ describe 'Cell, Integration' do
|
|
146
145
|
|
147
146
|
context 'a cell that is part of a scenario' do
|
148
147
|
|
149
|
-
|
150
|
-
|
148
|
+
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
149
|
+
let(:source_gherkin) { "#{@feature_keyword}: Test feature
|
151
150
|
|
152
|
-
|
153
|
-
|
154
|
-
|
151
|
+
#{@scenario_keyword}: Test test
|
152
|
+
#{@step_keyword} a step:
|
153
|
+
| a | table |"
|
154
|
+
}
|
155
155
|
|
156
|
-
|
157
|
-
|
158
|
-
end
|
159
|
-
|
160
|
-
let(:directory) { CukeModeler::Directory.new(@default_file_directory) }
|
161
|
-
let(:cell) { directory.feature_files.first.feature.tests.first.steps.first.block.rows.first.cells.first }
|
156
|
+
let(:directory_model) { CukeModeler::Directory.new(test_directory) }
|
157
|
+
let(:cell_model) { directory_model.feature_files.first.feature.tests.first.steps.first.block.rows.first.cells.first }
|
162
158
|
|
163
159
|
|
164
160
|
it 'can get its scenario' do
|
165
|
-
ancestor =
|
161
|
+
ancestor = cell_model.get_ancestor(:scenario)
|
166
162
|
|
167
|
-
expect(ancestor).to equal(
|
163
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature.tests.first)
|
168
164
|
end
|
169
165
|
|
170
166
|
end
|
171
167
|
|
172
168
|
context 'a cell that is part of a background' do
|
173
169
|
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
#{@background_keyword}: Test background
|
178
|
-
#{@step_keyword} a step:
|
179
|
-
| a | table |"
|
170
|
+
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
171
|
+
let(:source_gherkin) { "#{@feature_keyword}: Test feature
|
180
172
|
|
181
|
-
|
182
|
-
|
183
|
-
|
173
|
+
#{@background_keyword}: Test background
|
174
|
+
#{@step_keyword} a step:
|
175
|
+
| a | table |"
|
176
|
+
}
|
184
177
|
|
185
|
-
let(:
|
186
|
-
let(:
|
178
|
+
let(:directory_model) { CukeModeler::Directory.new(test_directory) }
|
179
|
+
let(:cell_model) { directory_model.feature_files.first.feature.background.steps.first.block.rows.first.cells.first }
|
187
180
|
|
188
181
|
|
189
182
|
it 'can get its background' do
|
190
|
-
ancestor =
|
183
|
+
ancestor = cell_model.get_ancestor(:background)
|
191
184
|
|
192
|
-
expect(ancestor).to equal(
|
185
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature.background)
|
193
186
|
end
|
194
187
|
|
195
188
|
end
|
196
189
|
|
197
190
|
context 'a cell that is part of a step' do
|
198
191
|
|
199
|
-
|
200
|
-
|
192
|
+
let(:test_directory) { CukeModeler::FileHelper.create_directory }
|
193
|
+
let(:source_gherkin) { "#{@feature_keyword}: Test feature
|
201
194
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
file_path = "#{@default_file_directory}/cell_test_file.feature"
|
207
|
-
File.open(file_path, 'w') { |file| file.write(source) }
|
208
|
-
end
|
195
|
+
#{@scenario_keyword}: Test test
|
196
|
+
#{@step_keyword} a step:
|
197
|
+
| a | table |"
|
198
|
+
}
|
209
199
|
|
210
|
-
let(:
|
211
|
-
let(:
|
200
|
+
let(:directory_model) { CukeModeler::Directory.new(test_directory) }
|
201
|
+
let(:cell_model) { directory_model.feature_files.first.feature.tests.first.steps.first.block.rows.first.cells.first }
|
212
202
|
|
213
203
|
|
214
204
|
it 'can get its step' do
|
215
|
-
ancestor =
|
205
|
+
ancestor = cell_model.get_ancestor(:step)
|
216
206
|
|
217
|
-
expect(ancestor).to equal(
|
207
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature.tests.first.steps.first)
|
218
208
|
end
|
219
209
|
|
220
210
|
it 'can get its table' do
|
221
|
-
ancestor =
|
211
|
+
ancestor = cell_model.get_ancestor(:table)
|
222
212
|
|
223
|
-
expect(ancestor).to equal(
|
213
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature.tests.first.steps.first.block)
|
224
214
|
end
|
225
215
|
|
226
216
|
it 'can get its row' do
|
227
|
-
ancestor =
|
217
|
+
ancestor = cell_model.get_ancestor(:row)
|
228
218
|
|
229
|
-
expect(ancestor).to equal(
|
219
|
+
expect(ancestor).to equal(directory_model.feature_files.first.feature.tests.first.steps.first.block.rows.first)
|
230
220
|
end
|
231
221
|
|
232
222
|
end
|
233
223
|
|
234
224
|
it 'returns nil if it does not have the requested type of ancestor' do
|
235
|
-
ancestor =
|
225
|
+
ancestor = cell_model.get_ancestor(:example)
|
236
226
|
|
237
227
|
expect(ancestor).to be_nil
|
238
228
|
end
|