cuke_modeler 1.5.0 → 3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +341 -0
- data/LICENSE.txt +1 -1
- data/README.md +22 -15
- data/cuke_modeler.gemspec +15 -9
- data/lib/cuke_modeler/adapters/gherkin_10_adapter.rb +12 -0
- data/lib/cuke_modeler/adapters/gherkin_11_adapter.rb +12 -0
- data/lib/cuke_modeler/adapters/gherkin_12_adapter.rb +12 -0
- data/lib/cuke_modeler/adapters/gherkin_13_adapter.rb +12 -0
- data/lib/cuke_modeler/adapters/gherkin_14_adapter.rb +12 -0
- data/lib/cuke_modeler/adapters/{gherkin_6_adapter.rb → gherkin_9_adapter.rb} +75 -64
- data/lib/cuke_modeler/containing.rb +3 -0
- data/lib/cuke_modeler/described.rb +1 -0
- data/lib/cuke_modeler/models/background.rb +1 -1
- data/lib/cuke_modeler/models/cell.rb +1 -1
- data/lib/cuke_modeler/models/comment.rb +1 -1
- data/lib/cuke_modeler/models/directory.rb +2 -2
- data/lib/cuke_modeler/models/doc_string.rb +1 -1
- data/lib/cuke_modeler/models/example.rb +1 -1
- data/lib/cuke_modeler/models/feature.rb +1 -1
- data/lib/cuke_modeler/models/feature_file.rb +2 -2
- data/lib/cuke_modeler/models/outline.rb +1 -1
- data/lib/cuke_modeler/models/row.rb +1 -1
- data/lib/cuke_modeler/models/scenario.rb +1 -1
- data/lib/cuke_modeler/models/step.rb +32 -3
- data/lib/cuke_modeler/models/table.rb +1 -1
- data/lib/cuke_modeler/models/tag.rb +1 -1
- data/lib/cuke_modeler/named.rb +1 -0
- data/lib/cuke_modeler/nested.rb +1 -0
- data/lib/cuke_modeler/parsed.rb +1 -0
- data/lib/cuke_modeler/parsing.rb +89 -94
- data/lib/cuke_modeler/sourceable.rb +1 -0
- data/lib/cuke_modeler/stepped.rb +1 -0
- data/lib/cuke_modeler/taggable.rb +1 -0
- data/lib/cuke_modeler/version.rb +1 -1
- data/testing/cucumber/features/analysis/step_comparison.feature +25 -0
- data/testing/cucumber/features/analysis/test_comparison.feature +1 -1
- metadata +56 -142
- data/.gitignore +0 -18
- data/.simplecov +0 -7
- data/.travis.yml +0 -60
- data/Gemfile +0 -36
- data/History.md +0 -196
- data/Rakefile +0 -63
- data/appveyor.yml +0 -61
- data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +0 -273
- data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +0 -296
- data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +0 -308
- data/testing/cucumber/step_definitions/action_steps.rb +0 -13
- data/testing/cucumber/step_definitions/background_steps.rb +0 -1
- data/testing/cucumber/step_definitions/directory_steps.rb +0 -6
- data/testing/cucumber/step_definitions/doc_string_steps.rb +0 -1
- data/testing/cucumber/step_definitions/feature_file_steps.rb +0 -16
- data/testing/cucumber/step_definitions/feature_steps.rb +0 -7
- data/testing/cucumber/step_definitions/modeling_steps.rb +0 -44
- data/testing/cucumber/step_definitions/setup_steps.rb +0 -32
- data/testing/cucumber/step_definitions/step_steps.rb +0 -3
- data/testing/cucumber/step_definitions/table_steps.rb +0 -1
- data/testing/cucumber/step_definitions/tag_steps.rb +0 -3
- data/testing/cucumber/step_definitions/verification_steps.rb +0 -173
- data/testing/cucumber/support/env.rb +0 -30
- data/testing/dialect_helper.rb +0 -48
- data/testing/file_helper.rb +0 -47
- data/testing/gemfiles/gherkin2.gemfile +0 -32
- data/testing/gemfiles/gherkin3.gemfile +0 -26
- data/testing/gemfiles/gherkin4.gemfile +0 -27
- data/testing/gemfiles/gherkin5.gemfile +0 -27
- data/testing/gemfiles/gherkin6.gemfile +0 -10
- data/testing/rspec/spec/integration/background_integration_spec.rb +0 -442
- data/testing/rspec/spec/integration/cell_integration_spec.rb +0 -335
- data/testing/rspec/spec/integration/comment_integration_spec.rb +0 -177
- data/testing/rspec/spec/integration/directory_integration_spec.rb +0 -218
- data/testing/rspec/spec/integration/doc_string_integration_spec.rb +0 -402
- data/testing/rspec/spec/integration/example_integration_spec.rb +0 -741
- data/testing/rspec/spec/integration/feature_file_integration_spec.rb +0 -272
- data/testing/rspec/spec/integration/feature_integration_spec.rb +0 -650
- data/testing/rspec/spec/integration/gherkin_2_adapter_spec.rb +0 -166
- data/testing/rspec/spec/integration/gherkin_3_adapter_spec.rb +0 -166
- data/testing/rspec/spec/integration/gherkin_4_adapter_spec.rb +0 -165
- data/testing/rspec/spec/integration/gherkin_6_adapter_spec.rb +0 -166
- data/testing/rspec/spec/integration/model_integration_spec.rb +0 -15
- data/testing/rspec/spec/integration/nested_integration_spec.rb +0 -91
- data/testing/rspec/spec/integration/outline_integration_spec.rb +0 -624
- data/testing/rspec/spec/integration/parsing_integration_spec.rb +0 -122
- data/testing/rspec/spec/integration/row_integration_spec.rb +0 -291
- data/testing/rspec/spec/integration/scenario_integration_spec.rb +0 -479
- data/testing/rspec/spec/integration/shared/models_integration_specs.rb +0 -18
- data/testing/rspec/spec/integration/step_integration_spec.rb +0 -475
- data/testing/rspec/spec/integration/table_integration_spec.rb +0 -337
- data/testing/rspec/spec/integration/tag_integration_spec.rb +0 -259
- data/testing/rspec/spec/spec_helper.rb +0 -122
- data/testing/rspec/spec/unit/background_unit_spec.rb +0 -83
- data/testing/rspec/spec/unit/cell_unit_spec.rb +0 -68
- data/testing/rspec/spec/unit/comment_unit_spec.rb +0 -68
- data/testing/rspec/spec/unit/described_unit_spec.rb +0 -23
- data/testing/rspec/spec/unit/directory_unit_spec.rb +0 -127
- data/testing/rspec/spec/unit/doc_string_unit_spec.rb +0 -100
- data/testing/rspec/spec/unit/example_unit_spec.rb +0 -133
- data/testing/rspec/spec/unit/feature_file_unit_spec.rb +0 -125
- data/testing/rspec/spec/unit/feature_unit_spec.rb +0 -157
- data/testing/rspec/spec/unit/model_unit_spec.rb +0 -15
- data/testing/rspec/spec/unit/named_unit_spec.rb +0 -23
- data/testing/rspec/spec/unit/nested_unit_spec.rb +0 -43
- data/testing/rspec/spec/unit/outline_unit_spec.rb +0 -117
- data/testing/rspec/spec/unit/parsed_unit_spec.rb +0 -27
- data/testing/rspec/spec/unit/parsing_unit_spec.rb +0 -54
- data/testing/rspec/spec/unit/row_unit_spec.rb +0 -68
- data/testing/rspec/spec/unit/scenario_unit_spec.rb +0 -86
- data/testing/rspec/spec/unit/shared/bare_bones_models_unit_specs.rb +0 -14
- data/testing/rspec/spec/unit/shared/containing_models_unit_specs.rb +0 -127
- data/testing/rspec/spec/unit/shared/described_models_unit_specs.rb +0 -38
- data/testing/rspec/spec/unit/shared/keyworded_models_unit_specs.rb +0 -58
- data/testing/rspec/spec/unit/shared/models_unit_specs.rb +0 -15
- data/testing/rspec/spec/unit/shared/named_models_unit_specs.rb +0 -39
- data/testing/rspec/spec/unit/shared/nested_models_unit_specs.rb +0 -51
- data/testing/rspec/spec/unit/shared/parsed_models_unit_specs.rb +0 -39
- data/testing/rspec/spec/unit/shared/prepopulated_models_unit_specs.rb +0 -18
- data/testing/rspec/spec/unit/shared/sourced_models_unit_specs.rb +0 -39
- data/testing/rspec/spec/unit/shared/stepped_models_unit_specs.rb +0 -46
- data/testing/rspec/spec/unit/shared/stringifiable_models_unit_specs.rb +0 -18
- data/testing/rspec/spec/unit/shared/tagged_models_unit_specs.rb +0 -72
- data/testing/rspec/spec/unit/sourceable_unit_spec.rb +0 -27
- data/testing/rspec/spec/unit/step_unit_spec.rb +0 -109
- data/testing/rspec/spec/unit/stepped_unit_spec.rb +0 -23
- data/testing/rspec/spec/unit/table_unit_spec.rb +0 -77
- data/testing/rspec/spec/unit/tag_unit_spec.rb +0 -68
- data/testing/rspec/spec/unit/taggable_unit_spec.rb +0 -69
- data/testing/test_languages.json +0 -45
- data/todo.txt +0 -24
@@ -1,166 +0,0 @@
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../spec_helper"
|
2
|
-
|
3
|
-
|
4
|
-
describe 'Gherkin2Adapter, Integration', :gherkin2 => true do
|
5
|
-
|
6
|
-
let(:clazz) { CukeModeler::Gherkin2Adapter }
|
7
|
-
let(:adapter) { clazz.new }
|
8
|
-
let(:source_text) { "# feature comment
|
9
|
-
@tag1 @tag2 @tag3
|
10
|
-
#{FEATURE_KEYWORD}: A feature with everything it could have
|
11
|
-
|
12
|
-
Including a description
|
13
|
-
and then some.
|
14
|
-
|
15
|
-
# background comment
|
16
|
-
#{BACKGROUND_KEYWORD}:
|
17
|
-
|
18
|
-
Background
|
19
|
-
description
|
20
|
-
|
21
|
-
#{STEP_KEYWORD} a step
|
22
|
-
# table comment
|
23
|
-
| value1 |
|
24
|
-
# table row comment
|
25
|
-
| value2 |
|
26
|
-
#{STEP_KEYWORD} another step
|
27
|
-
|
28
|
-
# scenario comment
|
29
|
-
@scenario_tag
|
30
|
-
#{SCENARIO_KEYWORD}:
|
31
|
-
|
32
|
-
Scenario
|
33
|
-
description
|
34
|
-
|
35
|
-
#{STEP_KEYWORD} a step
|
36
|
-
#{STEP_KEYWORD} another step
|
37
|
-
\"\"\"
|
38
|
-
some text
|
39
|
-
\"\"\"
|
40
|
-
|
41
|
-
# outline comment
|
42
|
-
@outline_tag
|
43
|
-
#{OUTLINE_KEYWORD}:
|
44
|
-
|
45
|
-
Outline
|
46
|
-
description
|
47
|
-
|
48
|
-
# step comment
|
49
|
-
#{STEP_KEYWORD} a step
|
50
|
-
# table comment
|
51
|
-
| value2 |
|
52
|
-
# step comment
|
53
|
-
#{STEP_KEYWORD} another step
|
54
|
-
# doc string comment
|
55
|
-
\"\"\"
|
56
|
-
some text
|
57
|
-
\"\"\"
|
58
|
-
|
59
|
-
# example comment
|
60
|
-
@example_tag
|
61
|
-
#{EXAMPLE_KEYWORD}:
|
62
|
-
|
63
|
-
Example
|
64
|
-
description
|
65
|
-
|
66
|
-
# row comment
|
67
|
-
| param |
|
68
|
-
| value |
|
69
|
-
# final comment" }
|
70
|
-
let(:feature_file_model) { test_file_path = CukeModeler::FileHelper.create_feature_file(:text => source_text, :name => 'adapter_test_file')
|
71
|
-
CukeModeler::FeatureFile.new(test_file_path) }
|
72
|
-
let(:feature_model) { feature_file_model.feature }
|
73
|
-
|
74
|
-
|
75
|
-
it "does not store parsing data for a feature file's children" do
|
76
|
-
model = feature_file_model
|
77
|
-
|
78
|
-
expect(model.parsing_data).to eq([])
|
79
|
-
end
|
80
|
-
|
81
|
-
it "does not store parsing data for a feature's children" do
|
82
|
-
model = feature_model
|
83
|
-
|
84
|
-
expect(model.parsing_data['comments']).to be_nil
|
85
|
-
expect(model.parsing_data['tags']).to be_nil
|
86
|
-
expect(model.parsing_data['elements']).to be_nil
|
87
|
-
end
|
88
|
-
|
89
|
-
it "does not store parsing data for a background's children" do
|
90
|
-
model = feature_model.background
|
91
|
-
|
92
|
-
expect(model.parsing_data['comments']).to be_nil
|
93
|
-
expect(model.parsing_data['steps']).to be_nil
|
94
|
-
end
|
95
|
-
|
96
|
-
it "does not store parsing data for a scenario's children" do
|
97
|
-
model = feature_model.scenarios.first
|
98
|
-
|
99
|
-
expect(model.parsing_data['comments']).to be_nil
|
100
|
-
expect(model.parsing_data['tags']).to be_nil
|
101
|
-
expect(model.parsing_data['steps']).to be_nil
|
102
|
-
end
|
103
|
-
|
104
|
-
it "does not store parsing data for an outline's children" do
|
105
|
-
model = feature_model.outlines.first
|
106
|
-
|
107
|
-
expect(model.parsing_data['comments']).to be_nil
|
108
|
-
expect(model.parsing_data['tags']).to be_nil
|
109
|
-
expect(model.parsing_data['steps']).to be_nil
|
110
|
-
expect(model.parsing_data['examples']).to be_nil
|
111
|
-
end
|
112
|
-
|
113
|
-
it "does not store parsing data for an example's children" do
|
114
|
-
model = feature_model.outlines.first.examples.first
|
115
|
-
|
116
|
-
expect(model.parsing_data['comments']).to be_nil
|
117
|
-
expect(model.parsing_data['tags']).to be_nil
|
118
|
-
expect(model.parsing_data['rows']).to be_nil
|
119
|
-
end
|
120
|
-
|
121
|
-
it "does not store parsing data for an example row's children" do
|
122
|
-
model = feature_model.outlines.first.examples.first.rows.first
|
123
|
-
|
124
|
-
expect(model.parsing_data['comments']).to be_nil
|
125
|
-
expect(model.parsing_data['cells']).to be_nil
|
126
|
-
end
|
127
|
-
|
128
|
-
it "does not store parsing data for a step's children, table" do
|
129
|
-
model = feature_model.outlines.first.steps.first
|
130
|
-
|
131
|
-
expect(model.parsing_data['comments']).to be_nil
|
132
|
-
expect(model.parsing_data['rows']).to be_nil
|
133
|
-
end
|
134
|
-
|
135
|
-
it "does not store parsing data for a step's children, doc string" do
|
136
|
-
model = feature_model.outlines.first.steps.last
|
137
|
-
|
138
|
-
expect(model.parsing_data['comments']).to be_nil
|
139
|
-
expect(model.parsing_data['doc_string']).to be_nil
|
140
|
-
end
|
141
|
-
|
142
|
-
it "does not store parsing data for a table's children" do
|
143
|
-
model = feature_model.outlines.first.steps.first.block
|
144
|
-
|
145
|
-
expect(model.parsing_data).to be_empty
|
146
|
-
end
|
147
|
-
|
148
|
-
it "does not store parsing data for a table row's children" do
|
149
|
-
model = feature_model.outlines.first.steps.first.block.rows.first
|
150
|
-
|
151
|
-
expect(model.parsing_data['comments']).to be_nil
|
152
|
-
expect(model.parsing_data['cells']).to be_nil
|
153
|
-
end
|
154
|
-
|
155
|
-
|
156
|
-
describe 'stuff that is in no way part of the public API and entirely subject to change' do
|
157
|
-
|
158
|
-
it 'provides a useful explosion message if it encounters an entirely new type of test' do
|
159
|
-
partial_feature_ast = {"elements" => [{"type" => "some_unknown_type"}]}
|
160
|
-
|
161
|
-
expect { adapter.adapt_feature!(partial_feature_ast, []) }.to raise_error(ArgumentError, /Unknown.*some_unknown_type/)
|
162
|
-
end
|
163
|
-
|
164
|
-
end
|
165
|
-
|
166
|
-
end
|
@@ -1,166 +0,0 @@
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../spec_helper"
|
2
|
-
|
3
|
-
|
4
|
-
describe 'Gherkin3Adapter, Integration', :gherkin3 => true do
|
5
|
-
|
6
|
-
let(:clazz) { CukeModeler::Gherkin3Adapter }
|
7
|
-
let(:adapter) { clazz.new }
|
8
|
-
let(:source_text) { "# feature comment
|
9
|
-
@tag1 @tag2 @tag3
|
10
|
-
#{FEATURE_KEYWORD}: A feature with everything it could have
|
11
|
-
|
12
|
-
Including a description
|
13
|
-
and then some.
|
14
|
-
|
15
|
-
# background comment
|
16
|
-
#{BACKGROUND_KEYWORD}:
|
17
|
-
|
18
|
-
Background
|
19
|
-
description
|
20
|
-
|
21
|
-
#{STEP_KEYWORD} a step
|
22
|
-
# table comment
|
23
|
-
| value1 |
|
24
|
-
# table row comment
|
25
|
-
| value2 |
|
26
|
-
#{STEP_KEYWORD} another step
|
27
|
-
|
28
|
-
# scenario comment
|
29
|
-
@scenario_tag
|
30
|
-
#{SCENARIO_KEYWORD}:
|
31
|
-
|
32
|
-
Scenario
|
33
|
-
description
|
34
|
-
|
35
|
-
#{STEP_KEYWORD} a step
|
36
|
-
#{STEP_KEYWORD} another step
|
37
|
-
\"\"\"
|
38
|
-
some text
|
39
|
-
\"\"\"
|
40
|
-
|
41
|
-
# outline comment
|
42
|
-
@outline_tag
|
43
|
-
#{OUTLINE_KEYWORD}:
|
44
|
-
|
45
|
-
Outline
|
46
|
-
description
|
47
|
-
|
48
|
-
# step comment
|
49
|
-
#{STEP_KEYWORD} a step
|
50
|
-
# table comment
|
51
|
-
| value2 |
|
52
|
-
# step comment
|
53
|
-
#{STEP_KEYWORD} another step
|
54
|
-
# doc string comment
|
55
|
-
\"\"\"
|
56
|
-
some text
|
57
|
-
\"\"\"
|
58
|
-
|
59
|
-
# example comment
|
60
|
-
@example_tag
|
61
|
-
#{EXAMPLE_KEYWORD}:
|
62
|
-
|
63
|
-
Example
|
64
|
-
description
|
65
|
-
|
66
|
-
# row comment
|
67
|
-
| param |
|
68
|
-
| value |
|
69
|
-
# final comment" }
|
70
|
-
let(:feature_file_model) { test_file_path = CukeModeler::FileHelper.create_feature_file(:text => source_text, :name => 'adapter_test_file')
|
71
|
-
CukeModeler::FeatureFile.new(test_file_path) }
|
72
|
-
let(:feature_model) { feature_file_model.feature }
|
73
|
-
|
74
|
-
|
75
|
-
it "does not store parsing data for a feature file's children" do
|
76
|
-
model = feature_file_model
|
77
|
-
|
78
|
-
expect(model.parsing_data).to be_nil
|
79
|
-
end
|
80
|
-
|
81
|
-
it "does not store parsing data for a feature's children" do
|
82
|
-
model = feature_model
|
83
|
-
|
84
|
-
expect(model.parsing_data[:comments]).to be_nil
|
85
|
-
expect(model.parsing_data[:tags]).to be_nil
|
86
|
-
expect(model.parsing_data[:scenarioDefinitions]).to be_nil
|
87
|
-
expect(model.parsing_data[:background]).to be_nil
|
88
|
-
end
|
89
|
-
|
90
|
-
it "does not store parsing data for a background's children" do
|
91
|
-
model = feature_model.background
|
92
|
-
|
93
|
-
expect(model.parsing_data[:steps]).to be_nil
|
94
|
-
end
|
95
|
-
|
96
|
-
it "does not store parsing data for a scenario's children" do
|
97
|
-
model = feature_model.scenarios.first
|
98
|
-
|
99
|
-
expect(model.parsing_data[:tags]).to be_nil
|
100
|
-
expect(model.parsing_data[:steps]).to be_nil
|
101
|
-
end
|
102
|
-
|
103
|
-
it "does not store parsing data for an outline's children" do
|
104
|
-
model = feature_model.outlines.first
|
105
|
-
|
106
|
-
expect(model.parsing_data[:tags]).to be_nil
|
107
|
-
expect(model.parsing_data[:steps]).to be_nil
|
108
|
-
expect(model.parsing_data[:examples]).to be_nil
|
109
|
-
end
|
110
|
-
|
111
|
-
it "does not store parsing data for an example's children" do
|
112
|
-
model = feature_model.outlines.first.examples.first
|
113
|
-
|
114
|
-
expect(model.parsing_data[:tags]).to be_nil
|
115
|
-
expect(model.parsing_data[:tableHeader]).to be_nil
|
116
|
-
expect(model.parsing_data[:tableBody]).to be_nil
|
117
|
-
end
|
118
|
-
|
119
|
-
it "does not store parsing data for an example row's children" do
|
120
|
-
model = feature_model.outlines.first.examples.first.rows.first
|
121
|
-
|
122
|
-
expect(model.parsing_data[:cells]).to be_nil
|
123
|
-
end
|
124
|
-
|
125
|
-
it "does not store parsing data for a step's children, table" do
|
126
|
-
model = feature_model.outlines.first.steps.first
|
127
|
-
|
128
|
-
expect(model.parsing_data[:argument]).to be_nil
|
129
|
-
end
|
130
|
-
|
131
|
-
it "does not store parsing data for a step's children, doc string" do
|
132
|
-
model = feature_model.outlines.first.steps.last
|
133
|
-
|
134
|
-
expect(model.parsing_data[:argument]).to be_nil
|
135
|
-
end
|
136
|
-
|
137
|
-
it "does not store parsing data for a table's children" do
|
138
|
-
model = feature_model.outlines.first.steps.first.block
|
139
|
-
|
140
|
-
expect(model.parsing_data[:rows]).to be_nil
|
141
|
-
end
|
142
|
-
|
143
|
-
it "does not store parsing data for a table row's children" do
|
144
|
-
model = feature_model.outlines.first.steps.first.block.rows.first
|
145
|
-
|
146
|
-
expect(model.parsing_data[:cells]).to be_nil
|
147
|
-
end
|
148
|
-
|
149
|
-
|
150
|
-
describe 'stuff that is in no way part of the public API and entirely subject to change' do
|
151
|
-
|
152
|
-
it 'provides a useful explosion message if it encounters an entirely new type of test' do
|
153
|
-
partial_feature_ast = {:type => :Feature, :location => {:line => 1, :column => 1}, :scenarioDefinitions => [{:type => :some_unknown_type}]}
|
154
|
-
|
155
|
-
expect { adapter.adapt_feature!(partial_feature_ast) }.to raise_error(ArgumentError, /Unknown.*some_unknown_type/)
|
156
|
-
end
|
157
|
-
|
158
|
-
it 'provides a useful explosion message if it encounters an entirely new type of step block' do
|
159
|
-
partial_feature_ast = {:type => :Feature, :location => {:line => 1, :column => 1}, :scenarioDefinitions => [{:type => :Scenario, :tags => [], :location => {:line => 1, :column => 1}, :steps => [{:type => :Step, :location => {:line => 1, :column => 1}, :argument => {:type => :some_unknown_type, :location => {:line => 1, :column => 1}, :content => ""}}]}]}
|
160
|
-
|
161
|
-
expect { adapter.adapt_feature!(partial_feature_ast) }.to raise_error(ArgumentError, /Unknown.*some_unknown_type/)
|
162
|
-
end
|
163
|
-
|
164
|
-
end
|
165
|
-
|
166
|
-
end
|
@@ -1,165 +0,0 @@
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../spec_helper"
|
2
|
-
|
3
|
-
|
4
|
-
describe 'Gherkin4Adapter, Integration', :gherkin4_5 => true do
|
5
|
-
|
6
|
-
let(:clazz) { CukeModeler::Gherkin4Adapter }
|
7
|
-
let(:adapter) { clazz.new }
|
8
|
-
let(:source_text) { "# feature comment
|
9
|
-
@tag1 @tag2 @tag3
|
10
|
-
#{FEATURE_KEYWORD}: A feature with everything it could have
|
11
|
-
|
12
|
-
Including a description
|
13
|
-
and then some.
|
14
|
-
|
15
|
-
# background comment
|
16
|
-
#{BACKGROUND_KEYWORD}:
|
17
|
-
|
18
|
-
Background
|
19
|
-
description
|
20
|
-
|
21
|
-
#{STEP_KEYWORD} a step
|
22
|
-
# table comment
|
23
|
-
| value1 |
|
24
|
-
# table row comment
|
25
|
-
| value2 |
|
26
|
-
#{STEP_KEYWORD} another step
|
27
|
-
|
28
|
-
# scenario comment
|
29
|
-
@scenario_tag
|
30
|
-
#{SCENARIO_KEYWORD}:
|
31
|
-
|
32
|
-
Scenario
|
33
|
-
description
|
34
|
-
|
35
|
-
#{STEP_KEYWORD} a step
|
36
|
-
#{STEP_KEYWORD} another step
|
37
|
-
\"\"\"
|
38
|
-
some text
|
39
|
-
\"\"\"
|
40
|
-
|
41
|
-
# outline comment
|
42
|
-
@outline_tag
|
43
|
-
#{OUTLINE_KEYWORD}:
|
44
|
-
|
45
|
-
Outline
|
46
|
-
description
|
47
|
-
|
48
|
-
# step comment
|
49
|
-
#{STEP_KEYWORD} a step
|
50
|
-
# table comment
|
51
|
-
| value2 |
|
52
|
-
# step comment
|
53
|
-
#{STEP_KEYWORD} another step
|
54
|
-
# doc string comment
|
55
|
-
\"\"\"
|
56
|
-
some text
|
57
|
-
\"\"\"
|
58
|
-
|
59
|
-
# example comment
|
60
|
-
@example_tag
|
61
|
-
#{EXAMPLE_KEYWORD}:
|
62
|
-
|
63
|
-
Example
|
64
|
-
description
|
65
|
-
|
66
|
-
# row comment
|
67
|
-
| param |
|
68
|
-
| value |
|
69
|
-
# final comment" }
|
70
|
-
let(:feature_file_model) { test_file_path = CukeModeler::FileHelper.create_feature_file(:text => source_text, :name => 'adapter_test_file')
|
71
|
-
CukeModeler::FeatureFile.new(test_file_path) }
|
72
|
-
let(:feature_model) { feature_file_model.feature }
|
73
|
-
|
74
|
-
|
75
|
-
it "does not store parsing data for a feature file's children" do
|
76
|
-
model = feature_file_model
|
77
|
-
|
78
|
-
expect(model.parsing_data[:comments]).to be_nil
|
79
|
-
expect(model.parsing_data[:feature]).to be_nil
|
80
|
-
end
|
81
|
-
|
82
|
-
it "does not store parsing data for a feature's children" do
|
83
|
-
model = feature_model
|
84
|
-
|
85
|
-
expect(model.parsing_data[:tags]).to be_nil
|
86
|
-
expect(model.parsing_data[:children]).to be_nil
|
87
|
-
end
|
88
|
-
|
89
|
-
it "does not store parsing data for a background's children" do
|
90
|
-
model = feature_model.background
|
91
|
-
|
92
|
-
expect(model.parsing_data[:steps]).to be_nil
|
93
|
-
end
|
94
|
-
|
95
|
-
it "does not store parsing data for a scenario's children" do
|
96
|
-
model = feature_model.scenarios.first
|
97
|
-
|
98
|
-
expect(model.parsing_data[:tags]).to be_nil
|
99
|
-
expect(model.parsing_data[:steps]).to be_nil
|
100
|
-
end
|
101
|
-
|
102
|
-
it "does not store parsing data for an outline's children" do
|
103
|
-
model = feature_model.outlines.first
|
104
|
-
|
105
|
-
expect(model.parsing_data[:tags]).to be_nil
|
106
|
-
expect(model.parsing_data[:steps]).to be_nil
|
107
|
-
expect(model.parsing_data[:examples]).to be_nil
|
108
|
-
end
|
109
|
-
|
110
|
-
it "does not store parsing data for an example's children" do
|
111
|
-
model = feature_model.outlines.first.examples.first
|
112
|
-
|
113
|
-
expect(model.parsing_data[:tags]).to be_nil
|
114
|
-
expect(model.parsing_data[:tableHeader]).to be_nil
|
115
|
-
expect(model.parsing_data[:tableBody]).to be_nil
|
116
|
-
end
|
117
|
-
|
118
|
-
it "does not store parsing data for an example row's children" do
|
119
|
-
model = feature_model.outlines.first.examples.first.rows.first
|
120
|
-
|
121
|
-
expect(model.parsing_data[:cells]).to be_nil
|
122
|
-
end
|
123
|
-
|
124
|
-
it "does not store parsing data for a step's children, table" do
|
125
|
-
model = feature_model.outlines.first.steps.first
|
126
|
-
|
127
|
-
expect(model.parsing_data[:argument]).to be_nil
|
128
|
-
end
|
129
|
-
|
130
|
-
it "does not store parsing data for a step's children, doc string" do
|
131
|
-
model = feature_model.outlines.first.steps.last
|
132
|
-
|
133
|
-
expect(model.parsing_data[:argument]).to be_nil
|
134
|
-
end
|
135
|
-
|
136
|
-
it "does not store parsing data for a table's children" do
|
137
|
-
model = feature_model.outlines.first.steps.first.block
|
138
|
-
|
139
|
-
expect(model.parsing_data[:rows]).to be_nil
|
140
|
-
end
|
141
|
-
|
142
|
-
it "does not store parsing data for a table row's children" do
|
143
|
-
model = feature_model.outlines.first.steps.first.block.rows.first
|
144
|
-
|
145
|
-
expect(model.parsing_data[:cells]).to be_nil
|
146
|
-
end
|
147
|
-
|
148
|
-
|
149
|
-
describe 'stuff that is in no way part of the public API and entirely subject to change' do
|
150
|
-
|
151
|
-
it 'provides a useful explosion message if it encounters an entirely new type of test' do
|
152
|
-
partial_feature_ast = {:type => :Feature, :location => {:line => 1, :column => 1}, :children => [{:type => :some_unknown_type}]}
|
153
|
-
|
154
|
-
expect { adapter.adapt_feature!(partial_feature_ast) }.to raise_error(ArgumentError, /Unknown.*some_unknown_type/)
|
155
|
-
end
|
156
|
-
|
157
|
-
it 'provides a useful explosion message if it encounters an entirely new type of step block' do
|
158
|
-
partial_feature_ast = {:type => :Feature, :location => {:line => 1, :column => 1}, :children => [{:type => :Scenario, :tags => [], :location => {:line => 1, :column => 1}, :steps => [{:type => :Step, :location => {:line => 1, :column => 1}, :argument => {:type => :some_unknown_type, :location => {:line => 1, :column => 1}, :content => ""}}]}]}
|
159
|
-
|
160
|
-
expect { adapter.adapt_feature!(partial_feature_ast) }.to raise_error(ArgumentError, /Unknown.*some_unknown_type/)
|
161
|
-
end
|
162
|
-
|
163
|
-
end
|
164
|
-
|
165
|
-
end
|