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
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
Feature: Background modeling
|
|
2
|
+
|
|
3
|
+
Background models represent the Background portion of a feature. They expose several attributes of the background
|
|
4
|
+
that they represent, as well as containing models for the steps that are present in that background.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given the following gherkin:
|
|
9
|
+
"""
|
|
10
|
+
Background: Some general test setup stuff.
|
|
11
|
+
|
|
12
|
+
Some background description.
|
|
13
|
+
|
|
14
|
+
Some more.
|
|
15
|
+
Even more.
|
|
16
|
+
|
|
17
|
+
Given a setup step
|
|
18
|
+
And another setup step
|
|
19
|
+
When an action step
|
|
20
|
+
"""
|
|
21
|
+
And a background model based on that gherkin
|
|
22
|
+
"""
|
|
23
|
+
@model = CukeModeler::Background.new(<source_text>)
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Scenario: Modeling a backgrounds's name
|
|
28
|
+
When the background's name is requested
|
|
29
|
+
"""
|
|
30
|
+
@model.name
|
|
31
|
+
"""
|
|
32
|
+
Then the model returns "Some general test setup stuff."
|
|
33
|
+
|
|
34
|
+
Scenario: Modeling a backgrounds's description
|
|
35
|
+
When the background's description is requested
|
|
36
|
+
"""
|
|
37
|
+
@model.description
|
|
38
|
+
"""
|
|
39
|
+
Then the model returns
|
|
40
|
+
"""
|
|
41
|
+
Some background description.
|
|
42
|
+
|
|
43
|
+
Some more.
|
|
44
|
+
Even more.
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
Scenario: Modeling a backgrounds's steps
|
|
48
|
+
When the background's steps are requested
|
|
49
|
+
"""
|
|
50
|
+
@model.steps
|
|
51
|
+
"""
|
|
52
|
+
Then the model returns models for the following steps:
|
|
53
|
+
| a setup step |
|
|
54
|
+
| another setup step |
|
|
55
|
+
| an action step |
|
|
56
|
+
|
|
57
|
+
Scenario: Modeling a backgrounds's source line
|
|
58
|
+
Given the following gherkin:
|
|
59
|
+
"""
|
|
60
|
+
Feature:
|
|
61
|
+
|
|
62
|
+
Background:
|
|
63
|
+
* a step
|
|
64
|
+
"""
|
|
65
|
+
And a feature model based on that gherkin
|
|
66
|
+
"""
|
|
67
|
+
@model = CukeModeler::Feature.new(<source_text>)
|
|
68
|
+
"""
|
|
69
|
+
And the background model of that feature model
|
|
70
|
+
"""
|
|
71
|
+
@model = @model.background
|
|
72
|
+
"""
|
|
73
|
+
When the background's source line is requested
|
|
74
|
+
"""
|
|
75
|
+
@model.source_line
|
|
76
|
+
"""
|
|
77
|
+
Then the model returns "3"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
Feature: Background output
|
|
2
|
+
|
|
3
|
+
A background model's string output is a Gherkin representation of itself.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Scenario: Outputting a background model
|
|
7
|
+
Given the following gherkin:
|
|
8
|
+
"""
|
|
9
|
+
Background: A background with everything that it could have
|
|
10
|
+
|
|
11
|
+
Including a description
|
|
12
|
+
and then some.
|
|
13
|
+
|
|
14
|
+
* a step
|
|
15
|
+
|value|
|
|
16
|
+
* another step
|
|
17
|
+
\"\"\"
|
|
18
|
+
some string
|
|
19
|
+
\"\"\"
|
|
20
|
+
"""
|
|
21
|
+
And a background model based on that gherkin
|
|
22
|
+
"""
|
|
23
|
+
@model = CukeModeler::Background.new(<source_text>)
|
|
24
|
+
"""
|
|
25
|
+
When the model is output as a string
|
|
26
|
+
"""
|
|
27
|
+
@model.to_s
|
|
28
|
+
"""
|
|
29
|
+
Then the following text is provided:
|
|
30
|
+
"""
|
|
31
|
+
Background: A background with everything that it could have
|
|
32
|
+
|
|
33
|
+
Including a description
|
|
34
|
+
and then some.
|
|
35
|
+
|
|
36
|
+
* a step
|
|
37
|
+
| value |
|
|
38
|
+
* another step
|
|
39
|
+
\"\"\"
|
|
40
|
+
some string
|
|
41
|
+
\"\"\"
|
|
42
|
+
"""
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Feature: Cell modeling
|
|
2
|
+
|
|
3
|
+
Cell models represent an individual cell in a table row (either a step table or an example table). They expose
|
|
4
|
+
several attributes of the cell that they represent.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given the following gherkin:
|
|
9
|
+
"""
|
|
10
|
+
foo
|
|
11
|
+
"""
|
|
12
|
+
And a cell model based on that gherkin
|
|
13
|
+
"""
|
|
14
|
+
@model = CukeModeler::Cell.new(<source_text>)
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Scenario: Modeling a cell's value
|
|
19
|
+
When the cell's value is requested
|
|
20
|
+
"""
|
|
21
|
+
@model.value
|
|
22
|
+
"""
|
|
23
|
+
Then the model returns "foo"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Feature: Cell output
|
|
2
|
+
|
|
3
|
+
A cell model's string output is a Gherkin representation of itself.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Scenario: Outputting a cell model
|
|
7
|
+
Given the following gherkin:
|
|
8
|
+
"""
|
|
9
|
+
foo
|
|
10
|
+
"""
|
|
11
|
+
And a cell model based on that gherkin
|
|
12
|
+
"""
|
|
13
|
+
@model = CukeModeler::Cell.new(<source_text>)
|
|
14
|
+
"""
|
|
15
|
+
When the model is output as a string
|
|
16
|
+
"""
|
|
17
|
+
@model.to_s
|
|
18
|
+
"""
|
|
19
|
+
Then the following text is provided:
|
|
20
|
+
"""
|
|
21
|
+
foo
|
|
22
|
+
"""
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Feature: Directory modeling
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Directory models are the top level element of a model tree. They expose several attributes of the directory that they
|
|
5
|
+
represent, as well as containing models for any feature files or subdirectories that are present in the directory
|
|
6
|
+
that they represent.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Background: An existing test suite
|
|
10
|
+
Given the directory "test_directory"
|
|
11
|
+
And the file "test_directory/test_file_1.feature"
|
|
12
|
+
And the file "test_directory/test_file_2.feature"
|
|
13
|
+
And the file "test_directory/random.file"
|
|
14
|
+
And the directory "test_directory/nested_directory"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
Scenario: Modeling a directory's path
|
|
18
|
+
Given a directory is modeled
|
|
19
|
+
"""
|
|
20
|
+
@model = CukeModeler::Directory.new('<path_to>/test_directory')
|
|
21
|
+
"""
|
|
22
|
+
When the directory's path is requested
|
|
23
|
+
"""
|
|
24
|
+
@model.path
|
|
25
|
+
"""
|
|
26
|
+
Then the model returns "path_to/test_directory"
|
|
27
|
+
|
|
28
|
+
Scenario: Modeling a directory's name
|
|
29
|
+
Given a directory is modeled
|
|
30
|
+
"""
|
|
31
|
+
@model = CukeModeler::Directory.new('<path_to>/test_directory')
|
|
32
|
+
"""
|
|
33
|
+
When the directory's name is requested
|
|
34
|
+
"""
|
|
35
|
+
@model.name
|
|
36
|
+
"""
|
|
37
|
+
Then the model returns "test_directory"
|
|
38
|
+
|
|
39
|
+
Scenario: Modeling a directory's feature files
|
|
40
|
+
|
|
41
|
+
Note: Files that are not .feature files are not modeled
|
|
42
|
+
|
|
43
|
+
Given a directory is modeled
|
|
44
|
+
"""
|
|
45
|
+
@model = CukeModeler::Directory.new('<path_to>/test_directory')
|
|
46
|
+
"""
|
|
47
|
+
When the directory's feature files are requested
|
|
48
|
+
"""
|
|
49
|
+
@model.feature_files
|
|
50
|
+
"""
|
|
51
|
+
Then the model returns models for the following feature files:
|
|
52
|
+
| test_file_1.feature |
|
|
53
|
+
| test_file_2.feature |
|
|
54
|
+
|
|
55
|
+
Scenario: Modeling a directory's directories
|
|
56
|
+
Given a directory is modeled
|
|
57
|
+
"""
|
|
58
|
+
@model = CukeModeler::Directory.new('<path_to>/test_directory')
|
|
59
|
+
"""
|
|
60
|
+
When the directory's directories are requested
|
|
61
|
+
"""
|
|
62
|
+
@model.directories
|
|
63
|
+
"""
|
|
64
|
+
Then the model returns models for the following directories:
|
|
65
|
+
| nested_directory |
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Feature: Directory output
|
|
2
|
+
|
|
3
|
+
A directory model's string output is simply the file path of the directory that it models.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Scenario: Outputting a directory model
|
|
7
|
+
Given a directory model based on "some_directory"
|
|
8
|
+
When it is outputted
|
|
9
|
+
Then the following text is provided:
|
|
10
|
+
"""
|
|
11
|
+
<path_to>/some_directory
|
|
12
|
+
"""
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
Feature: Doc string modeling
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Doc string models represent the doc string argument to a step. They expose several attributes of the doc string
|
|
5
|
+
that they represent.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given the following gherkin:
|
|
10
|
+
"""
|
|
11
|
+
\"\"\" type foo
|
|
12
|
+
content bar
|
|
13
|
+
\"\"\"
|
|
14
|
+
"""
|
|
15
|
+
And a doc string model based on that gherkin
|
|
16
|
+
"""
|
|
17
|
+
@model = CukeModeler::DocString.new(<source_text>)
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
Scenario: Modeling a doc string's content type
|
|
22
|
+
When the doc string's name is requested
|
|
23
|
+
"""
|
|
24
|
+
@model.content_type
|
|
25
|
+
"""
|
|
26
|
+
Then the model returns "type foo"
|
|
27
|
+
|
|
28
|
+
Scenario: Modeling a doc string's content
|
|
29
|
+
When the doc string's content is requested
|
|
30
|
+
"""
|
|
31
|
+
@model.content
|
|
32
|
+
"""
|
|
33
|
+
Then the model returns
|
|
34
|
+
"""
|
|
35
|
+
content bar
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
Scenario: Modeling a doc string's source line
|
|
39
|
+
Given the following gherkin:
|
|
40
|
+
"""
|
|
41
|
+
Feature:
|
|
42
|
+
|
|
43
|
+
Scenario:
|
|
44
|
+
* a step
|
|
45
|
+
\"\"\"
|
|
46
|
+
foo
|
|
47
|
+
\"\"\"
|
|
48
|
+
"""
|
|
49
|
+
And a feature model based on that gherkin
|
|
50
|
+
"""
|
|
51
|
+
@model = CukeModeler::Feature.new(<source_text>)
|
|
52
|
+
"""
|
|
53
|
+
And the doc string model inside of that feature model
|
|
54
|
+
"""
|
|
55
|
+
@model = @model.tests.first.steps.first.block
|
|
56
|
+
"""
|
|
57
|
+
When the doc string's source line is requested
|
|
58
|
+
"""
|
|
59
|
+
@model.source_line
|
|
60
|
+
"""
|
|
61
|
+
Then the model returns "5"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Feature: Doc string output
|
|
2
|
+
|
|
3
|
+
A doc string model's string output is a Gherkin representation of itself.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Scenario: Outputting a doc string model
|
|
7
|
+
Given the following gherkin:
|
|
8
|
+
"""
|
|
9
|
+
\"\"\" type foo
|
|
10
|
+
Some text
|
|
11
|
+
|
|
12
|
+
some more text
|
|
13
|
+
|
|
14
|
+
\"\"\"
|
|
15
|
+
"""
|
|
16
|
+
And a doc string model based on that gherkin
|
|
17
|
+
"""
|
|
18
|
+
@model = CukeModeler::DocString.new(<source_text>)
|
|
19
|
+
"""
|
|
20
|
+
When the model is output as a string
|
|
21
|
+
"""
|
|
22
|
+
@model.to_s
|
|
23
|
+
"""
|
|
24
|
+
Then the following text is provided:
|
|
25
|
+
"""
|
|
26
|
+
\"\"\" type foo
|
|
27
|
+
Some text
|
|
28
|
+
|
|
29
|
+
some more text
|
|
30
|
+
|
|
31
|
+
\"\"\"
|
|
32
|
+
"""
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
Feature: Example modeling
|
|
2
|
+
|
|
3
|
+
Example models represent an example table of a Scenario Outline portion of a feature. They expose
|
|
4
|
+
several attributes of the example that they represent, as well as containing models for the example
|
|
5
|
+
rows and tags that are present in that example.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given the following gherkin:
|
|
10
|
+
"""
|
|
11
|
+
@a_tag
|
|
12
|
+
Examples: test example
|
|
13
|
+
|
|
14
|
+
Some example description.
|
|
15
|
+
|
|
16
|
+
Some more.
|
|
17
|
+
Even more.
|
|
18
|
+
|
|
19
|
+
| param 1 | param 2 |
|
|
20
|
+
| value 1 | value 2 |
|
|
21
|
+
"""
|
|
22
|
+
And an example model based on that gherkin
|
|
23
|
+
"""
|
|
24
|
+
@model = CukeModeler::Example.new(<source_text>)
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Scenario: Modeling an example's name
|
|
29
|
+
When the example's name is requested
|
|
30
|
+
"""
|
|
31
|
+
@model.name
|
|
32
|
+
"""
|
|
33
|
+
Then the model returns "test example"
|
|
34
|
+
|
|
35
|
+
Scenario: Modeling an example's description
|
|
36
|
+
When the example's description is requested
|
|
37
|
+
"""
|
|
38
|
+
@model.description
|
|
39
|
+
"""
|
|
40
|
+
Then the model returns
|
|
41
|
+
"""
|
|
42
|
+
Some example description.
|
|
43
|
+
|
|
44
|
+
Some more.
|
|
45
|
+
Even more.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
Scenario: Modeling an example's rows
|
|
49
|
+
When the example's rows are requested
|
|
50
|
+
"""
|
|
51
|
+
@model.rows
|
|
52
|
+
"""
|
|
53
|
+
Then the model returns models for the following rows:
|
|
54
|
+
| param 1 | param 2 |
|
|
55
|
+
| value 1 | value 2 |
|
|
56
|
+
|
|
57
|
+
Scenario: Modeling an example's tags
|
|
58
|
+
Given the following gherkin:
|
|
59
|
+
"""
|
|
60
|
+
@feature_tag
|
|
61
|
+
Feature:
|
|
62
|
+
|
|
63
|
+
@outline_tag
|
|
64
|
+
Scenario Outline:
|
|
65
|
+
* a step
|
|
66
|
+
|
|
67
|
+
@example_tag
|
|
68
|
+
Examples:
|
|
69
|
+
| param |
|
|
70
|
+
| value |
|
|
71
|
+
"""
|
|
72
|
+
And a feature model based on that gherkin
|
|
73
|
+
"""
|
|
74
|
+
@model = CukeModeler::Feature.new(<source_text>)
|
|
75
|
+
"""
|
|
76
|
+
And the example model inside of that feature model
|
|
77
|
+
"""
|
|
78
|
+
@model = @model.tests.first.examples.first
|
|
79
|
+
"""
|
|
80
|
+
When the example's tags are requested
|
|
81
|
+
"""
|
|
82
|
+
@model.tags
|
|
83
|
+
"""
|
|
84
|
+
Then the model returns models for the following tags:
|
|
85
|
+
| @example_tag |
|
|
86
|
+
When the example's inherited tags are requested
|
|
87
|
+
"""
|
|
88
|
+
@model.applied_tags
|
|
89
|
+
"""
|
|
90
|
+
Then the model returns models for the following tags:
|
|
91
|
+
| @feature_tag |
|
|
92
|
+
| @outline_tag |
|
|
93
|
+
When all of the example's tags are requested
|
|
94
|
+
"""
|
|
95
|
+
@model.all_tags
|
|
96
|
+
"""
|
|
97
|
+
Then the model returns models for the following tags:
|
|
98
|
+
| @feature_tag |
|
|
99
|
+
| @outline_tag |
|
|
100
|
+
| @example_tag |
|
|
101
|
+
|
|
102
|
+
Scenario: Modeling an example's source line
|
|
103
|
+
Given the following gherkin:
|
|
104
|
+
"""
|
|
105
|
+
Feature:
|
|
106
|
+
|
|
107
|
+
Scenario Outline:
|
|
108
|
+
* a step
|
|
109
|
+
Examples:
|
|
110
|
+
| param |
|
|
111
|
+
| value |
|
|
112
|
+
"""
|
|
113
|
+
And a feature model based on that gherkin
|
|
114
|
+
"""
|
|
115
|
+
@model = CukeModeler::Feature.new(<source_text>)
|
|
116
|
+
"""
|
|
117
|
+
And the example model inside of that feature model
|
|
118
|
+
"""
|
|
119
|
+
@model = @model.tests.first.examples.first
|
|
120
|
+
"""
|
|
121
|
+
When the example's source line is requested
|
|
122
|
+
"""
|
|
123
|
+
@model.source_line
|
|
124
|
+
"""
|
|
125
|
+
Then the model returns "5"
|