cuke_modeler 0.4.1 → 1.0.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/.gitignore +17 -17
- data/.travis.yml +1 -1
- data/Gemfile +4 -0
- data/History.rdoc +71 -3
- data/LICENSE.txt +22 -22
- data/README.md +24 -10
- data/Rakefile +2 -12
- data/cuke_modeler.gemspec +1 -1
- data/features/analysis/test_comparison.feature +37 -122
- data/features/modeling/background_modeling.feature +77 -0
- data/features/modeling/background_output.feature +42 -0
- data/features/modeling/cell_modeling.feature +23 -0
- data/features/modeling/cell_output.feature +22 -0
- data/features/modeling/directory_modeling.feature +65 -0
- data/features/modeling/directory_output.feature +12 -0
- data/features/modeling/doc_string_modeling.feature +61 -0
- data/features/modeling/doc_string_output.feature +32 -0
- data/features/modeling/example_modeling.feature +125 -0
- data/features/modeling/example_output.feature +39 -0
- data/features/modeling/feature_file_modeling.feature +40 -0
- data/features/modeling/feature_file_output.feature +12 -0
- data/features/modeling/feature_modeling.feature +109 -0
- data/features/modeling/feature_output.feature +104 -0
- data/features/modeling/model_output.feature +22 -0
- data/features/modeling/model_structure.feature +48 -0
- data/features/modeling/outline_modeling.feature +144 -0
- data/features/modeling/outline_output.feature +69 -0
- data/features/modeling/row_modeling.feature +48 -0
- data/features/modeling/row_output.feature +22 -0
- data/features/modeling/scenario_modeling.feature +118 -0
- data/features/modeling/scenario_output.feature +45 -0
- data/features/modeling/step_modeling.feature +84 -0
- data/features/modeling/step_output.feature +29 -0
- data/features/modeling/table_modeling.feature +50 -0
- data/features/modeling/table_output.feature +24 -0
- data/features/modeling/tag_modeling.feature +43 -0
- data/features/modeling/tag_output.feature +22 -0
- data/features/step_definitions/action_steps.rb +11 -1
- data/features/step_definitions/background_steps.rb +1 -85
- data/features/step_definitions/directory_steps.rb +2 -48
- data/features/step_definitions/doc_string_steps.rb +1 -67
- data/features/step_definitions/feature_file_steps.rb +2 -37
- data/features/step_definitions/feature_steps.rb +4 -100
- data/features/step_definitions/modeling_steps.rb +44 -0
- data/features/step_definitions/setup_steps.rb +19 -41
- data/features/step_definitions/step_steps.rb +2 -166
- data/features/step_definitions/table_steps.rb +1 -58
- data/features/step_definitions/tag_steps.rb +2 -72
- data/features/step_definitions/verification_steps.rb +152 -4
- data/features/support/env.rb +4 -6
- data/gemfiles/{gherkin.gemfile → gherkin2.gemfile} +4 -0
- data/gemfiles/gherkin3.gemfile +4 -0
- data/gemfiles/gherkin4.gemfile +4 -0
- data/lib/cuke_modeler.rb +24 -22
- data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +103 -31
- data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +103 -40
- data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +111 -50
- data/lib/cuke_modeler/containing.rb +255 -4
- data/lib/cuke_modeler/described.rb +28 -0
- data/lib/cuke_modeler/models/background.rb +66 -0
- data/lib/cuke_modeler/models/cell.rb +48 -0
- data/lib/cuke_modeler/models/directory.rb +95 -0
- data/lib/cuke_modeler/models/doc_string.rb +59 -0
- data/lib/cuke_modeler/models/example.rb +167 -0
- data/lib/cuke_modeler/models/feature.rb +106 -0
- data/lib/cuke_modeler/models/feature_file.rb +64 -0
- data/lib/cuke_modeler/models/model.rb +32 -0
- data/lib/cuke_modeler/models/outline.rb +79 -0
- data/lib/cuke_modeler/models/row.rb +49 -0
- data/lib/cuke_modeler/models/scenario.rb +69 -0
- data/lib/cuke_modeler/models/step.rb +68 -0
- data/lib/cuke_modeler/models/table.rb +67 -0
- data/lib/cuke_modeler/models/tag.rb +46 -0
- data/lib/cuke_modeler/named.rb +19 -0
- data/lib/cuke_modeler/nested.rb +22 -15
- data/lib/cuke_modeler/parsed.rb +11 -0
- data/lib/cuke_modeler/parsing.rb +66 -83
- data/lib/cuke_modeler/sourceable.rb +3 -11
- data/lib/cuke_modeler/stepped.rb +24 -0
- data/lib/cuke_modeler/taggable.rb +6 -29
- data/lib/cuke_modeler/version.rb +2 -1
- data/spec/integration/background_integration_spec.rb +332 -7
- data/spec/integration/cell_integration_spec.rb +321 -0
- data/spec/integration/directory_integration_spec.rb +175 -9
- data/spec/integration/doc_string_integration_spec.rb +318 -7
- data/spec/integration/example_integration_spec.rb +602 -19
- data/spec/integration/feature_file_integration_spec.rb +98 -3
- data/spec/integration/feature_integration_spec.rb +445 -27
- data/spec/integration/gherkin_2_adapter_spec.rb +122 -0
- data/spec/integration/gherkin_3_adapter_spec.rb +125 -0
- data/spec/integration/gherkin_4_adapter_spec.rb +123 -0
- data/spec/integration/model_integration_spec.rb +15 -0
- data/spec/integration/nested_integration_spec.rb +91 -0
- data/spec/integration/outline_integration_spec.rb +485 -12
- data/spec/integration/parsing_integration_spec.rb +85 -0
- data/spec/integration/row_integration_spec.rb +221 -18
- data/spec/integration/scenario_integration_spec.rb +368 -14
- data/spec/integration/shared/models_integration_specs.rb +18 -0
- data/spec/integration/step_integration_spec.rb +328 -77
- data/spec/integration/table_integration_spec.rb +242 -20
- data/spec/integration/tag_integration_spec.rb +178 -13
- data/spec/spec_helper.rb +32 -18
- data/spec/unit/background_unit_spec.rb +24 -44
- data/spec/unit/cell_unit_spec.rb +73 -0
- data/spec/unit/described_unit_spec.rb +23 -0
- data/spec/unit/directory_unit_spec.rb +52 -62
- data/spec/unit/doc_string_unit_spec.rb +47 -100
- data/spec/unit/example_unit_spec.rb +50 -296
- data/spec/unit/feature_file_unit_spec.rb +53 -52
- data/spec/unit/feature_unit_spec.rb +39 -83
- data/spec/unit/model_unit_spec.rb +15 -0
- data/spec/unit/named_unit_spec.rb +23 -0
- data/spec/unit/nested_unit_spec.rb +24 -21
- data/spec/unit/outline_unit_spec.rb +46 -69
- data/spec/unit/parsed_unit_spec.rb +27 -0
- data/spec/unit/parsing_unit_spec.rb +2 -70
- data/spec/unit/row_unit_spec.rb +22 -51
- data/spec/unit/scenario_unit_spec.rb +27 -59
- data/spec/unit/{bare_bones_unit_specs.rb → shared/bare_bones_models_unit_specs.rb} +2 -2
- data/spec/unit/shared/containing_models_unit_specs.rb +18 -0
- data/spec/unit/shared/described_models_unit_specs.rb +38 -0
- data/spec/unit/shared/models_unit_specs.rb +15 -0
- data/spec/unit/shared/named_models_unit_specs.rb +39 -0
- data/spec/unit/shared/nested_models_unit_specs.rb +51 -0
- data/spec/unit/shared/parsed_models_unit_specs.rb +39 -0
- data/spec/unit/shared/prepopulated_models_unit_specs.rb +18 -0
- data/spec/unit/shared/sourced_models_unit_specs.rb +39 -0
- data/spec/unit/shared/stepped_models_unit_specs.rb +46 -0
- data/spec/unit/shared/stringifiable_models_unit_specs.rb +18 -0
- data/spec/unit/shared/tagged_models_unit_specs.rb +72 -0
- data/spec/unit/sourceable_unit_spec.rb +12 -4
- data/spec/unit/step_unit_spec.rb +40 -231
- data/spec/unit/stepped_unit_spec.rb +23 -0
- data/spec/unit/table_unit_spec.rb +27 -89
- data/spec/unit/tag_unit_spec.rb +30 -53
- data/spec/unit/taggable_unit_spec.rb +26 -42
- data/todo.txt +32 -0
- metadata +135 -217
- data/features/analysis/test_manipulation.feature +0 -37
- data/features/modeling/gherkin/background_modeling.feature +0 -65
- data/features/modeling/gherkin/background_output.feature +0 -131
- data/features/modeling/gherkin/directory_modeling.feature +0 -110
- data/features/modeling/gherkin/directory_output.feature +0 -14
- data/features/modeling/gherkin/doc_string_modeling.feature +0 -53
- data/features/modeling/gherkin/doc_string_output.feature +0 -72
- data/features/modeling/gherkin/example_modeling.feature +0 -101
- data/features/modeling/gherkin/example_output.feature +0 -193
- data/features/modeling/gherkin/feature_file_modeling.feature +0 -54
- data/features/modeling/gherkin/feature_file_output.feature +0 -14
- data/features/modeling/gherkin/feature_modeling.feature +0 -154
- data/features/modeling/gherkin/feature_output.feature +0 -245
- data/features/modeling/gherkin/outline_modeling.feature +0 -90
- data/features/modeling/gherkin/outline_output.feature +0 -198
- data/features/modeling/gherkin/row_modeling.feature +0 -68
- data/features/modeling/gherkin/row_output.feature +0 -28
- data/features/modeling/gherkin/scenario_modeling.feature +0 -79
- data/features/modeling/gherkin/scenario_output.feature +0 -148
- data/features/modeling/gherkin/step_modeling.feature +0 -75
- data/features/modeling/gherkin/step_output.feature +0 -53
- data/features/modeling/gherkin/table_modeling.feature +0 -42
- data/features/modeling/gherkin/table_output.feature +0 -43
- data/features/modeling/gherkin/table_row_modeling.feature +0 -57
- data/features/modeling/gherkin/table_row_output.feature +0 -28
- data/features/modeling/gherkin/tag_modeling.feature +0 -48
- data/features/modeling/gherkin/tag_output.feature +0 -17
- data/features/modeling/gherkin3/background_modeling.feature +0 -64
- data/features/modeling/gherkin3/background_output.feature +0 -131
- data/features/modeling/gherkin3/directory_modeling.feature +0 -110
- data/features/modeling/gherkin3/directory_output.feature +0 -14
- data/features/modeling/gherkin3/doc_string_modeling.feature +0 -53
- data/features/modeling/gherkin3/doc_string_output.feature +0 -72
- data/features/modeling/gherkin3/example_modeling.feature +0 -100
- data/features/modeling/gherkin3/example_output.feature +0 -207
- data/features/modeling/gherkin3/feature_file_modeling.feature +0 -54
- data/features/modeling/gherkin3/feature_file_output.feature +0 -14
- data/features/modeling/gherkin3/feature_modeling.feature +0 -155
- data/features/modeling/gherkin3/feature_output.feature +0 -249
- data/features/modeling/gherkin3/outline_modeling.feature +0 -89
- data/features/modeling/gherkin3/outline_output.feature +0 -255
- data/features/modeling/gherkin3/row_modeling.feature +0 -68
- data/features/modeling/gherkin3/row_output.feature +0 -28
- data/features/modeling/gherkin3/scenario_modeling.feature +0 -78
- data/features/modeling/gherkin3/scenario_output.feature +0 -148
- data/features/modeling/gherkin3/step_modeling.feature +0 -75
- data/features/modeling/gherkin3/step_output.feature +0 -53
- data/features/modeling/gherkin3/table_modeling.feature +0 -42
- data/features/modeling/gherkin3/table_output.feature +0 -43
- data/features/modeling/gherkin3/table_row_modeling.feature +0 -57
- data/features/modeling/gherkin3/table_row_output.feature +0 -28
- data/features/modeling/gherkin3/tag_modeling.feature +0 -49
- data/features/modeling/gherkin3/tag_output.feature +0 -17
- data/features/modeling/gherkin4/background_modeling.feature +0 -64
- data/features/modeling/gherkin4/background_output.feature +0 -131
- data/features/modeling/gherkin4/directory_modeling.feature +0 -110
- data/features/modeling/gherkin4/directory_output.feature +0 -14
- data/features/modeling/gherkin4/doc_string_modeling.feature +0 -53
- data/features/modeling/gherkin4/doc_string_output.feature +0 -72
- data/features/modeling/gherkin4/example_modeling.feature +0 -100
- data/features/modeling/gherkin4/example_output.feature +0 -193
- data/features/modeling/gherkin4/feature_file_modeling.feature +0 -54
- data/features/modeling/gherkin4/feature_file_output.feature +0 -14
- data/features/modeling/gherkin4/feature_modeling.feature +0 -153
- data/features/modeling/gherkin4/feature_output.feature +0 -245
- data/features/modeling/gherkin4/outline_modeling.feature +0 -89
- data/features/modeling/gherkin4/outline_output.feature +0 -198
- data/features/modeling/gherkin4/row_modeling.feature +0 -68
- data/features/modeling/gherkin4/row_output.feature +0 -28
- data/features/modeling/gherkin4/scenario_modeling.feature +0 -78
- data/features/modeling/gherkin4/scenario_output.feature +0 -148
- data/features/modeling/gherkin4/step_modeling.feature +0 -75
- data/features/modeling/gherkin4/step_output.feature +0 -53
- data/features/modeling/gherkin4/table_modeling.feature +0 -42
- data/features/modeling/gherkin4/table_output.feature +0 -43
- data/features/modeling/gherkin4/table_row_modeling.feature +0 -57
- data/features/modeling/gherkin4/table_row_output.feature +0 -28
- data/features/modeling/gherkin4/tag_modeling.feature +0 -48
- data/features/modeling/gherkin4/tag_output.feature +0 -17
- data/features/step_definitions/outline_steps.rb +0 -258
- data/features/step_definitions/test_steps.rb +0 -123
- data/lib/cuke_modeler/background.rb +0 -38
- data/lib/cuke_modeler/directory.rb +0 -83
- data/lib/cuke_modeler/doc_string.rb +0 -87
- data/lib/cuke_modeler/example.rb +0 -195
- data/lib/cuke_modeler/feature.rb +0 -147
- data/lib/cuke_modeler/feature_element.rb +0 -73
- data/lib/cuke_modeler/feature_file.rb +0 -77
- data/lib/cuke_modeler/outline.rb +0 -68
- data/lib/cuke_modeler/raw.rb +0 -20
- data/lib/cuke_modeler/row.rb +0 -64
- data/lib/cuke_modeler/scenario.rb +0 -45
- data/lib/cuke_modeler/step.rb +0 -216
- data/lib/cuke_modeler/table.rb +0 -90
- data/lib/cuke_modeler/table_row.rb +0 -64
- data/lib/cuke_modeler/tag.rb +0 -62
- data/lib/cuke_modeler/test_element.rb +0 -79
- data/lib/cuke_modeler/world.rb +0 -113
- data/spec/integration/table_row_integration_spec.rb +0 -76
- data/spec/integration/world_integration_spec.rb +0 -14
- data/spec/unit/containing_element_unit_specs.rb +0 -18
- data/spec/unit/feature_element_unit_spec.rb +0 -19
- data/spec/unit/feature_element_unit_specs.rb +0 -52
- data/spec/unit/nested_element_unit_specs.rb +0 -39
- data/spec/unit/prepopulated_unit_specs.rb +0 -14
- data/spec/unit/raw_element_unit_specs.rb +0 -27
- data/spec/unit/raw_unit_spec.rb +0 -28
- data/spec/unit/sourced_element_unit_specs.rb +0 -18
- data/spec/unit/table_row_unit_spec.rb +0 -102
- data/spec/unit/tagged_element_unit_specs.rb +0 -67
- data/spec/unit/test_element_unit_spec.rb +0 -54
- data/spec/unit/test_element_unit_specs.rb +0 -34
- data/spec/unit/world_unit_spec.rb +0 -140
data/spec/unit/step_unit_spec.rb
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
SimpleCov.command_name('Step') unless RUBY_VERSION.to_s < '1.9.0'
|
|
4
3
|
|
|
5
|
-
describe 'Step, Unit' do
|
|
4
|
+
describe 'Step, Unit', :unit_test => true do
|
|
6
5
|
|
|
7
6
|
let(:clazz) { CukeModeler::Step }
|
|
8
7
|
let(:step) { clazz.new }
|
|
@@ -10,286 +9,96 @@ describe 'Step, Unit' do
|
|
|
10
9
|
|
|
11
10
|
describe 'common behavior' do
|
|
12
11
|
|
|
13
|
-
it_should_behave_like 'a
|
|
14
|
-
it_should_behave_like 'a
|
|
15
|
-
it_should_behave_like 'a
|
|
16
|
-
it_should_behave_like 'a sourced element'
|
|
17
|
-
it_should_behave_like 'a raw element'
|
|
12
|
+
it_should_behave_like 'a model'
|
|
13
|
+
it_should_behave_like 'a sourced model'
|
|
14
|
+
it_should_behave_like 'a parsed model'
|
|
18
15
|
|
|
19
16
|
end
|
|
20
17
|
|
|
21
18
|
|
|
22
19
|
describe 'unique behavior' do
|
|
23
20
|
|
|
24
|
-
it 'has
|
|
25
|
-
step.
|
|
21
|
+
it 'has text' do
|
|
22
|
+
expect(step).to respond_to(:text)
|
|
26
23
|
end
|
|
27
24
|
|
|
28
|
-
it 'can change its
|
|
29
|
-
expect(step).to respond_to(:
|
|
25
|
+
it 'can change its text' do
|
|
26
|
+
expect(step).to respond_to(:text=)
|
|
30
27
|
|
|
31
|
-
step.
|
|
32
|
-
step.
|
|
33
|
-
step.
|
|
34
|
-
step.
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it 'starts with no arguments' do
|
|
38
|
-
step.arguments.should == []
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it 'has a base' do
|
|
42
|
-
step.should respond_to(:base)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it 'can change its base' do
|
|
46
|
-
expect(step).to respond_to(:base=)
|
|
47
|
-
|
|
48
|
-
step.base = :some_base
|
|
49
|
-
step.base.should == :some_base
|
|
50
|
-
step.base = :some_other_base
|
|
51
|
-
step.base.should == :some_other_base
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it 'starts with no base' do
|
|
55
|
-
step.base.should == nil
|
|
28
|
+
step.text = :some_text
|
|
29
|
+
expect(step.text).to eq(:some_text)
|
|
30
|
+
step.text = :some_other_text
|
|
31
|
+
expect(step.text).to eq(:some_other_text)
|
|
56
32
|
end
|
|
57
33
|
|
|
58
34
|
it 'has a block' do
|
|
59
|
-
step.
|
|
35
|
+
expect(step).to respond_to(:block)
|
|
60
36
|
end
|
|
61
37
|
|
|
62
38
|
it 'can change its block' do
|
|
63
39
|
expect(step).to respond_to(:block=)
|
|
64
40
|
|
|
65
41
|
step.block = :some_block
|
|
66
|
-
step.block.
|
|
42
|
+
expect(step.block).to eq(:some_block)
|
|
67
43
|
step.block = :some_other_block
|
|
68
|
-
step.block.
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'starts with no block' do
|
|
72
|
-
step.block.should == nil
|
|
44
|
+
expect(step.block).to eq(:some_other_block)
|
|
73
45
|
end
|
|
74
46
|
|
|
75
47
|
it 'has a keyword' do
|
|
76
|
-
step.
|
|
48
|
+
expect(step).to respond_to(:keyword)
|
|
77
49
|
end
|
|
78
50
|
|
|
79
51
|
it 'can change its keyword' do
|
|
80
52
|
expect(step).to respond_to(:keyword=)
|
|
81
53
|
|
|
82
54
|
step.keyword = :some_keyword
|
|
83
|
-
step.keyword.
|
|
55
|
+
expect(step.keyword).to eq(:some_keyword)
|
|
84
56
|
step.keyword = :some_other_keyword
|
|
85
|
-
step.keyword.
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it 'starts with no keyword' do
|
|
89
|
-
step.keyword.should == nil
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
it 'has a left delimiter' do
|
|
93
|
-
step.should respond_to(:left_delimiter)
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it 'can change its left delimiter' do
|
|
97
|
-
expect(step).to respond_to(:left_delimiter=)
|
|
98
|
-
|
|
99
|
-
step.left_delimiter = :some_left_delimiter
|
|
100
|
-
step.left_delimiter.should == :some_left_delimiter
|
|
101
|
-
step.left_delimiter = :some_other_left_delimiter
|
|
102
|
-
step.left_delimiter.should == :some_other_left_delimiter
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
it 'starts with no left delimiter' do
|
|
106
|
-
step.left_delimiter.should == nil
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
it 'has a right delimiter' do
|
|
110
|
-
step.should respond_to(:right_delimiter)
|
|
57
|
+
expect(step.keyword).to eq(:some_other_keyword)
|
|
111
58
|
end
|
|
112
59
|
|
|
113
|
-
it 'can change its right delimiter' do
|
|
114
|
-
expect(step).to respond_to(:right_delimiter=)
|
|
115
|
-
|
|
116
|
-
step.right_delimiter = :some_right_delimiter
|
|
117
|
-
step.right_delimiter.should == :some_right_delimiter
|
|
118
|
-
step.right_delimiter = :some_other_right_delimiter
|
|
119
|
-
step.right_delimiter.should == :some_other_right_delimiter
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
it 'starts with no right delimiter' do
|
|
123
|
-
step.right_delimiter.should == nil
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
it 'can set both of its delimiters at once' do
|
|
127
|
-
step.delimiter = :new_delimiter
|
|
128
|
-
step.left_delimiter.should == :new_delimiter
|
|
129
|
-
step.right_delimiter.should == :new_delimiter
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
describe '#scan_arguments' do
|
|
133
|
-
|
|
134
|
-
it 'can explicitly scan for arguments' do
|
|
135
|
-
step.should respond_to(:scan_arguments)
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
it 'can determine its arguments based on a regular expression' do
|
|
139
|
-
source = 'Given a test step with a parameter'
|
|
140
|
-
step = clazz.new(source)
|
|
141
|
-
|
|
142
|
-
step.scan_arguments(/parameter/)
|
|
143
|
-
step.arguments.should == ['parameter']
|
|
144
|
-
step.scan_arguments(/t s/)
|
|
145
|
-
step.arguments.should == ['t s']
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
it 'can determine its arguments based on delimiters' do
|
|
149
|
-
source = 'Given a test step with -parameter 1- and -parameter 2-'
|
|
150
|
-
|
|
151
|
-
step = clazz.new(source)
|
|
152
|
-
|
|
153
|
-
step.scan_arguments('-', '-')
|
|
154
|
-
step.arguments.should == ['parameter 1', 'parameter 2']
|
|
155
|
-
step.scan_arguments('!', '!')
|
|
156
|
-
step.arguments.should == []
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
it 'can use different left and right delimiters when scanning' do
|
|
160
|
-
source = 'Given a test step with !a parameter-'
|
|
161
|
-
|
|
162
|
-
step = clazz.new(source)
|
|
163
|
-
|
|
164
|
-
step.scan_arguments('!', '-')
|
|
165
|
-
step.arguments.should == ['a parameter']
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
it 'can use delimiters of varying lengths' do
|
|
169
|
-
source = 'Given a test step with -start-a parameter-end-'
|
|
170
60
|
|
|
171
|
-
|
|
61
|
+
describe 'abstract instantiation' do
|
|
172
62
|
|
|
173
|
-
|
|
174
|
-
step.arguments.should == ['a parameter']
|
|
175
|
-
end
|
|
63
|
+
context 'a new step object' do
|
|
176
64
|
|
|
177
|
-
|
|
178
|
-
source = 'Given a test step with \d+a parameter.?'
|
|
65
|
+
let(:step) { clazz.new }
|
|
179
66
|
|
|
180
|
-
step = clazz.new(source)
|
|
181
67
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
68
|
+
it 'starts with no text' do
|
|
69
|
+
expect(step.text).to be_nil
|
|
70
|
+
end
|
|
185
71
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
72
|
+
it 'starts with no block' do
|
|
73
|
+
expect(step.block).to be_nil
|
|
74
|
+
end
|
|
189
75
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
76
|
+
it 'starts with no keyword' do
|
|
77
|
+
expect(step.keyword).to be_nil
|
|
78
|
+
end
|
|
193
79
|
|
|
194
|
-
step.arguments.should == ['parameter 2']
|
|
195
80
|
end
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
it 'can be parsed from stand alone text' do
|
|
199
|
-
source = '* test step'
|
|
200
81
|
|
|
201
|
-
expect { @element = clazz.new(source) }.to_not raise_error
|
|
202
|
-
|
|
203
|
-
# Sanity check in case instantiation failed in a non-explosive manner
|
|
204
|
-
@element.base.should == 'test step'
|
|
205
82
|
end
|
|
206
83
|
|
|
207
|
-
it '
|
|
208
|
-
|
|
84
|
+
it 'contains some kind of block' do
|
|
85
|
+
block = :block
|
|
86
|
+
everything = [block]
|
|
209
87
|
|
|
210
|
-
|
|
211
|
-
end
|
|
88
|
+
step.block = block
|
|
212
89
|
|
|
213
|
-
|
|
214
|
-
step = clazz.new("* test step")
|
|
215
|
-
raw_data = step.raw_element
|
|
216
|
-
|
|
217
|
-
expect(raw_data.keys).to match_array([:type, :location, :keyword, :text])
|
|
218
|
-
expect(raw_data[:type]).to eq(:Step)
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
|
|
222
|
-
step = clazz.new("* test step")
|
|
223
|
-
raw_data = step.raw_element
|
|
224
|
-
|
|
225
|
-
expect(raw_data.keys).to match_array([:type, :location, :keyword, :text])
|
|
226
|
-
expect(raw_data[:type]).to eq(:Step)
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
|
|
230
|
-
step = clazz.new("* test step")
|
|
231
|
-
raw_data = step.raw_element
|
|
232
|
-
|
|
233
|
-
expect(raw_data.keys).to match_array(['keyword', 'name', 'line'])
|
|
234
|
-
expect(raw_data['keyword']).to eq('* ')
|
|
90
|
+
expect(step.children).to match_array(everything)
|
|
235
91
|
end
|
|
236
92
|
|
|
237
93
|
|
|
238
|
-
describe '
|
|
239
|
-
|
|
240
|
-
let(:source) { "Given a test step with -parameter 1- ^and@ *parameter 2!!\n|a block|" }
|
|
241
|
-
let(:delimiter) { '-' }
|
|
242
|
-
let(:step) { s = clazz.new(source)
|
|
243
|
-
s.delimiter = delimiter
|
|
244
|
-
s }
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
it 'can provide different flavors of step\'s text' do
|
|
248
|
-
step.should respond_to(:step_text)
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
it 'returns different text based on options' do
|
|
252
|
-
(clazz.instance_method(:step_text).arity != 0).should be_true
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
it 'returns the step\'s text as an Array' do
|
|
256
|
-
step.step_text.is_a?(Array).should be_true
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
it 'can provide the step\'s text without the arguments' do
|
|
260
|
-
expected_output = ['Given a test step with -- ^and@ *parameter 2!!']
|
|
261
|
-
|
|
262
|
-
step.step_text(:with_arguments => false).should == expected_output
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
it 'can determine its arguments based on delimiters' do
|
|
266
|
-
expected_output = ['Given a test step with -parameter 1- ^@ *parameter 2!!']
|
|
267
|
-
|
|
268
|
-
step.step_text(:with_arguments => false, :left_delimiter => '^', :right_delimiter => '@').should == expected_output
|
|
269
|
-
end
|
|
270
|
-
|
|
271
|
-
it 'can use delimiters of varying lengths' do
|
|
272
|
-
expected_output = ['Given a test step with -parameter 1- ^and@ *!!']
|
|
273
|
-
|
|
274
|
-
step.step_text(:with_arguments => false, :left_delimiter => '*', :right_delimiter => '!!').should == expected_output
|
|
275
|
-
end
|
|
276
|
-
|
|
277
|
-
it 'can handle delimiters with special regular expression characters' do
|
|
278
|
-
expected_output = ['Given a test step with -parameter 1- ^and@ *!!']
|
|
279
|
-
|
|
280
|
-
step.step_text(:with_arguments => false, :left_delimiter => '*', :right_delimiter => '!!').should == expected_output
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
describe 'step output edge cases' do
|
|
94
|
+
describe 'step output' do
|
|
286
95
|
|
|
287
96
|
it 'is a String' do
|
|
288
|
-
step.to_s.
|
|
97
|
+
expect(step.to_s).to be_a(String)
|
|
289
98
|
end
|
|
290
99
|
|
|
291
100
|
|
|
292
|
-
context '
|
|
101
|
+
context 'from abstract instantiation' do
|
|
293
102
|
|
|
294
103
|
let(:step) { clazz.new }
|
|
295
104
|
|
|
@@ -304,8 +113,8 @@ describe 'Step, Unit' do
|
|
|
304
113
|
expect { step.to_s }.to_not raise_error
|
|
305
114
|
end
|
|
306
115
|
|
|
307
|
-
it 'can output a step that has only a
|
|
308
|
-
step.
|
|
116
|
+
it 'can output a step that has only a text' do
|
|
117
|
+
step.text = 'step text'
|
|
309
118
|
|
|
310
119
|
expect { step.to_s }.to_not raise_error
|
|
311
120
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
describe 'Stepped, Unit', :unit_test => true do
|
|
5
|
+
|
|
6
|
+
let(:nodule) { CukeModeler::Stepped }
|
|
7
|
+
let(:stepped_model) { Object.new.extend(nodule) }
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
it 'has steps' do
|
|
11
|
+
expect(stepped_model).to respond_to(:steps)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'can change its steps' do
|
|
15
|
+
expect(stepped_model).to respond_to(:steps=)
|
|
16
|
+
|
|
17
|
+
stepped_model.steps = :some_steps
|
|
18
|
+
expect(stepped_model.steps).to eq(:some_steps)
|
|
19
|
+
stepped_model.steps = :some_other_steps
|
|
20
|
+
expect(stepped_model.steps).to eq(:some_other_steps)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
SimpleCov.command_name('Table') unless RUBY_VERSION.to_s < '1.9.0'
|
|
4
3
|
|
|
5
|
-
describe 'Table, Unit' do
|
|
4
|
+
describe 'Table, Unit', :unit_test => true do
|
|
6
5
|
|
|
7
6
|
let(:clazz) { CukeModeler::Table }
|
|
8
7
|
let(:table) { clazz.new }
|
|
@@ -10,116 +9,62 @@ describe 'Table, Unit' do
|
|
|
10
9
|
|
|
11
10
|
describe 'common behavior' do
|
|
12
11
|
|
|
13
|
-
it_should_behave_like 'a
|
|
14
|
-
it_should_behave_like 'a
|
|
15
|
-
it_should_behave_like 'a
|
|
16
|
-
it_should_behave_like 'a raw element'
|
|
12
|
+
it_should_behave_like 'a model'
|
|
13
|
+
it_should_behave_like 'a parsed model'
|
|
14
|
+
it_should_behave_like 'a sourced model'
|
|
17
15
|
|
|
18
16
|
end
|
|
19
17
|
|
|
20
18
|
|
|
21
19
|
describe 'unique behavior' do
|
|
22
20
|
|
|
23
|
-
it '
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
expect { @element = clazz.new(source) }.to_not raise_error
|
|
27
|
-
|
|
28
|
-
# Sanity check in case instantiation failed in a non-explosive manner
|
|
29
|
-
@element.row_elements.collect { |row| row.cells }.should == [['a table']]
|
|
30
|
-
# todo - remove once #contents is no longer supported
|
|
31
|
-
@element.contents.should == [['a table']]
|
|
21
|
+
it 'has rows' do
|
|
22
|
+
expect(table).to respond_to(:rows)
|
|
32
23
|
end
|
|
33
24
|
|
|
34
|
-
it '
|
|
35
|
-
|
|
25
|
+
it 'can change its rows' do
|
|
26
|
+
expect(table).to respond_to(:rows=)
|
|
36
27
|
|
|
37
|
-
|
|
28
|
+
table.rows = :some_rows
|
|
29
|
+
expect(table.rows).to eq(:some_rows)
|
|
30
|
+
table.rows = :some_other_rows
|
|
31
|
+
expect(table.rows).to eq(:some_other_rows)
|
|
38
32
|
end
|
|
39
33
|
|
|
40
|
-
it 'stores the original data generated by the parsing adapter', :gherkin4 => true do
|
|
41
|
-
table = clazz.new("| a table |")
|
|
42
|
-
raw_data = table.raw_element
|
|
43
|
-
|
|
44
|
-
expect(raw_data.keys).to match_array([:type, :location, :rows])
|
|
45
|
-
expect(raw_data[:type]).to eq(:DataTable)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
|
|
49
|
-
table = clazz.new("| a table |")
|
|
50
|
-
raw_data = table.raw_element
|
|
51
|
-
|
|
52
|
-
expect(raw_data.keys).to match_array([:type, :location, :rows])
|
|
53
|
-
expect(raw_data[:type]).to eq(:DataTable)
|
|
54
|
-
end
|
|
55
34
|
|
|
56
|
-
|
|
57
|
-
table = clazz.new("| a table |")
|
|
58
|
-
raw_data = table.raw_element
|
|
35
|
+
describe 'abstract instantiation' do
|
|
59
36
|
|
|
60
|
-
|
|
61
|
-
end
|
|
37
|
+
context 'a new table object' do
|
|
62
38
|
|
|
63
|
-
|
|
64
|
-
it 'has contents' do
|
|
65
|
-
table.should respond_to(:contents)
|
|
66
|
-
end
|
|
39
|
+
let(:table) { clazz.new }
|
|
67
40
|
|
|
68
|
-
# todo - remove once #contents is no longer supported
|
|
69
|
-
it 'can change its contents' do
|
|
70
|
-
expect(table).to respond_to(:contents=)
|
|
71
41
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
table.contents.should == :some_other_contents
|
|
76
|
-
end
|
|
42
|
+
it 'starts with no rows' do
|
|
43
|
+
expect(table.rows).to eq([])
|
|
44
|
+
end
|
|
77
45
|
|
|
78
|
-
|
|
79
|
-
it 'starts with no contents' do
|
|
80
|
-
table.contents.should == []
|
|
81
|
-
end
|
|
46
|
+
end
|
|
82
47
|
|
|
83
|
-
it 'has row elements' do
|
|
84
|
-
table.should respond_to(:row_elements)
|
|
85
48
|
end
|
|
86
49
|
|
|
87
|
-
it '
|
|
88
|
-
|
|
50
|
+
it 'contains rows' do
|
|
51
|
+
rows = [:row_1, :row_2]
|
|
52
|
+
everything = rows
|
|
89
53
|
|
|
90
|
-
table.
|
|
91
|
-
table.row_elements.should == :some_row_elements
|
|
92
|
-
table.row_elements = :some_other_row_elements
|
|
93
|
-
table.row_elements.should == :some_other_row_elements
|
|
94
|
-
end
|
|
54
|
+
table.rows = rows
|
|
95
55
|
|
|
96
|
-
|
|
97
|
-
table.row_elements.should == []
|
|
56
|
+
expect(table.children).to match_array(everything)
|
|
98
57
|
end
|
|
99
58
|
|
|
100
|
-
# todo - remove once #contents is no longer supported
|
|
101
|
-
it 'stores its contents as a nested array of strings' do
|
|
102
|
-
source = "| cell 1 | cell 2 |\n| cell 3 | cell 4 |"
|
|
103
|
-
table = clazz.new(source)
|
|
104
|
-
|
|
105
|
-
contents = table.contents
|
|
106
59
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
contents.each do |row|
|
|
110
|
-
row.is_a?(Array).should be_true
|
|
111
|
-
row.each { |cell| cell.is_a?(String).should be_true }
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
describe 'table output edge cases' do
|
|
60
|
+
describe 'table output' do
|
|
116
61
|
|
|
117
62
|
it 'is a String' do
|
|
118
|
-
table.to_s.
|
|
63
|
+
expect(table.to_s).to be_a(String)
|
|
119
64
|
end
|
|
120
65
|
|
|
121
66
|
|
|
122
|
-
context '
|
|
67
|
+
context 'from abstract instantiation' do
|
|
123
68
|
|
|
124
69
|
let(:table) { clazz.new }
|
|
125
70
|
|
|
@@ -128,13 +73,6 @@ describe 'Table, Unit' do
|
|
|
128
73
|
expect { table.to_s }.to_not raise_error
|
|
129
74
|
end
|
|
130
75
|
|
|
131
|
-
# todo - remove once #contents is no longer supported
|
|
132
|
-
it 'can output a table that only has contents' do
|
|
133
|
-
table.contents = ['some contents']
|
|
134
|
-
|
|
135
|
-
expect { table.to_s }.to_not raise_error
|
|
136
|
-
end
|
|
137
|
-
|
|
138
76
|
end
|
|
139
77
|
|
|
140
78
|
end
|