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,39 @@
|
|
|
1
|
+
Feature: Example output
|
|
2
|
+
|
|
3
|
+
An example model's string output is a Gherkin representation of itself.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Scenario: Outputting an example model
|
|
7
|
+
Given the following gherkin:
|
|
8
|
+
"""
|
|
9
|
+
@tag1
|
|
10
|
+
@tag2 @tag3
|
|
11
|
+
Examples: an example with everything that it could have
|
|
12
|
+
|
|
13
|
+
Some description.
|
|
14
|
+
Some more description.
|
|
15
|
+
|
|
16
|
+
|param1|param2|
|
|
17
|
+
|value1|value2|
|
|
18
|
+
|value3|value4|
|
|
19
|
+
"""
|
|
20
|
+
And an example model based on that gherkin
|
|
21
|
+
"""
|
|
22
|
+
@model = CukeModeler::Example.new(<source_text>)
|
|
23
|
+
"""
|
|
24
|
+
When the model is output as a string
|
|
25
|
+
"""
|
|
26
|
+
@model.to_s
|
|
27
|
+
"""
|
|
28
|
+
Then the following text is provided:
|
|
29
|
+
"""
|
|
30
|
+
@tag1 @tag2 @tag3
|
|
31
|
+
Examples: an example with everything that it could have
|
|
32
|
+
|
|
33
|
+
Some description.
|
|
34
|
+
Some more description.
|
|
35
|
+
|
|
36
|
+
| param1 | param2 |
|
|
37
|
+
| value1 | value2 |
|
|
38
|
+
| value3 | value4 |
|
|
39
|
+
"""
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Feature: Feature file modeling
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Feature file models represent a single .feature file in a test suite. They expose several attributes of the
|
|
5
|
+
feature file that they represent, as well as containing the model for the feature that is present in that file.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Background: An existing feature file
|
|
9
|
+
Given the directory "test_directory"
|
|
10
|
+
And the file "test_directory/foo.feature":
|
|
11
|
+
"""
|
|
12
|
+
Feature: Bar
|
|
13
|
+
"""
|
|
14
|
+
And the feature file is modeled
|
|
15
|
+
"""
|
|
16
|
+
@model = CukeModeler::FeatureFile.new('<path_to>/test_directory/foo.feature')
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Scenario: Modeling a feature files's path
|
|
21
|
+
When the feature file's path is requested
|
|
22
|
+
"""
|
|
23
|
+
@model.path
|
|
24
|
+
"""
|
|
25
|
+
Then the model returns "path_to/test_directory/foo.feature"
|
|
26
|
+
|
|
27
|
+
Scenario: Modeling a feature files's name
|
|
28
|
+
When the feature file's name is requested
|
|
29
|
+
"""
|
|
30
|
+
@model.name
|
|
31
|
+
"""
|
|
32
|
+
Then the model returns "foo.feature"
|
|
33
|
+
|
|
34
|
+
Scenario: Modeling a feature file's feature
|
|
35
|
+
When the feature file's feature is requested
|
|
36
|
+
"""
|
|
37
|
+
@model.feature
|
|
38
|
+
"""
|
|
39
|
+
Then the model returns a model for the following feature:
|
|
40
|
+
| Bar |
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Feature: Feature file output
|
|
2
|
+
|
|
3
|
+
A feature file model's string output is simply the file path of the feature file that it models.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Scenario: Outputting a feature file model
|
|
7
|
+
Given a feature file model based on "some_feature_file.feature"
|
|
8
|
+
When it is outputted
|
|
9
|
+
Then the following text is provided:
|
|
10
|
+
"""
|
|
11
|
+
<path_to>/some_feature_file.feature
|
|
12
|
+
"""
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Feature: Feature modeling
|
|
2
|
+
|
|
3
|
+
Feature models are the top level element of the gherkin portion of the model tree. They expose several attributes of
|
|
4
|
+
the feature that they represent, as well as containing models for any background, scenarios, or outlines that are
|
|
5
|
+
present in that feature.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given the following gherkin:
|
|
10
|
+
"""
|
|
11
|
+
@tag_1 @tag_2
|
|
12
|
+
Feature: Feature Foo
|
|
13
|
+
|
|
14
|
+
Some feature description.
|
|
15
|
+
|
|
16
|
+
Some more.
|
|
17
|
+
And some more.
|
|
18
|
+
|
|
19
|
+
Background: The background
|
|
20
|
+
* some setup step
|
|
21
|
+
|
|
22
|
+
Scenario: Scenario 1
|
|
23
|
+
* a step
|
|
24
|
+
|
|
25
|
+
Scenario Outline: Outline 1
|
|
26
|
+
* a step
|
|
27
|
+
Examples:
|
|
28
|
+
| param |
|
|
29
|
+
| value |
|
|
30
|
+
|
|
31
|
+
Scenario: Scenario 2
|
|
32
|
+
* a step
|
|
33
|
+
|
|
34
|
+
Scenario Outline: Outline 2
|
|
35
|
+
* a step
|
|
36
|
+
Examples:
|
|
37
|
+
| param |
|
|
38
|
+
| value |
|
|
39
|
+
"""
|
|
40
|
+
And a feature model based on that gherkin
|
|
41
|
+
"""
|
|
42
|
+
@model = CukeModeler::Feature.new(<source_text>)
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
Scenario: Modeling a feature's name
|
|
47
|
+
When the feature's name is requested
|
|
48
|
+
"""
|
|
49
|
+
@model.name
|
|
50
|
+
"""
|
|
51
|
+
Then the model returns "Feature Foo"
|
|
52
|
+
|
|
53
|
+
Scenario: Modeling a feature's description
|
|
54
|
+
When the feature's description is requested
|
|
55
|
+
"""
|
|
56
|
+
@model.description
|
|
57
|
+
"""
|
|
58
|
+
Then the model returns
|
|
59
|
+
"""
|
|
60
|
+
Some feature description.
|
|
61
|
+
|
|
62
|
+
Some more.
|
|
63
|
+
And some more.
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
Scenario: Modeling a feature's background
|
|
67
|
+
When the feature's background is requested
|
|
68
|
+
"""
|
|
69
|
+
@model.background
|
|
70
|
+
"""
|
|
71
|
+
Then the model returns a model for the background "The background"
|
|
72
|
+
|
|
73
|
+
Scenario: Modeling a feature's scenarios
|
|
74
|
+
When the feature's scenarios are requested
|
|
75
|
+
"""
|
|
76
|
+
@model.scenarios
|
|
77
|
+
"""
|
|
78
|
+
Then the model returns models for the following scenarios:
|
|
79
|
+
| Scenario 1 |
|
|
80
|
+
| Scenario 2 |
|
|
81
|
+
|
|
82
|
+
Scenario: Modeling a feature's outlines
|
|
83
|
+
When the feature's outlines are requested
|
|
84
|
+
"""
|
|
85
|
+
@model.outlines
|
|
86
|
+
"""
|
|
87
|
+
Then the model returns models for the following outlines:
|
|
88
|
+
| Outline 1 |
|
|
89
|
+
| Outline 2 |
|
|
90
|
+
|
|
91
|
+
Scenario: Modeling a feature's tags
|
|
92
|
+
|
|
93
|
+
Note: Although a feature does not inherit tags from anything else, they can still
|
|
94
|
+
be requested in the same manner as other models that have tags.
|
|
95
|
+
|
|
96
|
+
When the feature's tags are requested
|
|
97
|
+
"""
|
|
98
|
+
@model.tags
|
|
99
|
+
"""
|
|
100
|
+
Then the model returns models for the following tags:
|
|
101
|
+
| @tag_1 |
|
|
102
|
+
| @tag_2 |
|
|
103
|
+
|
|
104
|
+
Scenario: Modeling a feature's source line
|
|
105
|
+
When the feature's source line is requested
|
|
106
|
+
"""
|
|
107
|
+
@model.source_line
|
|
108
|
+
"""
|
|
109
|
+
Then the model returns "2"
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
Feature: Feature output
|
|
2
|
+
|
|
3
|
+
A feature model's string output is a Gherkin representation of itself.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Scenario: Outputting a feature model
|
|
7
|
+
Given the following gherkin:
|
|
8
|
+
"""
|
|
9
|
+
@tag1@tag2
|
|
10
|
+
@tag3
|
|
11
|
+
Feature: A feature with everything it could have
|
|
12
|
+
Including a description
|
|
13
|
+
and then some.
|
|
14
|
+
Background:
|
|
15
|
+
Background
|
|
16
|
+
description
|
|
17
|
+
* a step
|
|
18
|
+
|value1|
|
|
19
|
+
* another step
|
|
20
|
+
@scenario_tag
|
|
21
|
+
Scenario:
|
|
22
|
+
Scenario
|
|
23
|
+
description
|
|
24
|
+
* a step
|
|
25
|
+
* another step
|
|
26
|
+
\"\"\"
|
|
27
|
+
some text
|
|
28
|
+
\"\"\"
|
|
29
|
+
@outline_tag
|
|
30
|
+
Scenario Outline:
|
|
31
|
+
Outline
|
|
32
|
+
description
|
|
33
|
+
* a step
|
|
34
|
+
|value2|
|
|
35
|
+
* another step
|
|
36
|
+
\"\"\"
|
|
37
|
+
some text
|
|
38
|
+
\"\"\"
|
|
39
|
+
@example_tag
|
|
40
|
+
Examples:
|
|
41
|
+
Example
|
|
42
|
+
description
|
|
43
|
+
|param|
|
|
44
|
+
|value|
|
|
45
|
+
"""
|
|
46
|
+
And a feature model based on that gherkin
|
|
47
|
+
"""
|
|
48
|
+
@model = CukeModeler::Feature.new(<source_text>)
|
|
49
|
+
"""
|
|
50
|
+
When the model is output as a string
|
|
51
|
+
"""
|
|
52
|
+
@model.to_s
|
|
53
|
+
"""
|
|
54
|
+
Then the following text is provided:
|
|
55
|
+
"""
|
|
56
|
+
@tag1 @tag2 @tag3
|
|
57
|
+
Feature: A feature with everything it could have
|
|
58
|
+
|
|
59
|
+
Including a description
|
|
60
|
+
and then some.
|
|
61
|
+
|
|
62
|
+
Background:
|
|
63
|
+
|
|
64
|
+
Background
|
|
65
|
+
description
|
|
66
|
+
|
|
67
|
+
* a step
|
|
68
|
+
| value1 |
|
|
69
|
+
* another step
|
|
70
|
+
|
|
71
|
+
@scenario_tag
|
|
72
|
+
Scenario:
|
|
73
|
+
|
|
74
|
+
Scenario
|
|
75
|
+
description
|
|
76
|
+
|
|
77
|
+
* a step
|
|
78
|
+
* another step
|
|
79
|
+
\"\"\"
|
|
80
|
+
some text
|
|
81
|
+
\"\"\"
|
|
82
|
+
|
|
83
|
+
@outline_tag
|
|
84
|
+
Scenario Outline:
|
|
85
|
+
|
|
86
|
+
Outline
|
|
87
|
+
description
|
|
88
|
+
|
|
89
|
+
* a step
|
|
90
|
+
| value2 |
|
|
91
|
+
* another step
|
|
92
|
+
\"\"\"
|
|
93
|
+
some text
|
|
94
|
+
\"\"\"
|
|
95
|
+
|
|
96
|
+
@example_tag
|
|
97
|
+
Examples:
|
|
98
|
+
|
|
99
|
+
Example
|
|
100
|
+
description
|
|
101
|
+
|
|
102
|
+
| param |
|
|
103
|
+
| value |
|
|
104
|
+
"""
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Feature: Model output
|
|
2
|
+
|
|
3
|
+
All models can be output in text form. For models that represent parts of the file structure, this text
|
|
4
|
+
will be a path and for models that represent parts of a feature file, this text will be Gherkin (see the
|
|
5
|
+
model output documentation for specific models for details). As such, output from a model can be used as
|
|
6
|
+
input for the same kind of model.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Scenario: Outputting a model
|
|
10
|
+
Given the models provided by CukeModeler
|
|
11
|
+
Then all of them can be output as text appropriate to the model type
|
|
12
|
+
"""
|
|
13
|
+
model = <model_class>.new
|
|
14
|
+
|
|
15
|
+
model.to_s
|
|
16
|
+
"""
|
|
17
|
+
And the output can be used to make an equivalent model
|
|
18
|
+
"""
|
|
19
|
+
model = <model_class>.new
|
|
20
|
+
|
|
21
|
+
<model_class>.new(model.to_s)
|
|
22
|
+
"""
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
Feature: Model structure
|
|
2
|
+
|
|
3
|
+
When modeling an existing test suite, that suite is parsed and models are created for each element of the
|
|
4
|
+
suite. These models form a nested structure of parent and child models which has the same shape as whatever
|
|
5
|
+
portion of the suite that they represent (see the documentation for specific models for details).
|
|
6
|
+
|
|
7
|
+
However, all models can also be used in an 'abstract' manner. That is, they can be created without any input
|
|
8
|
+
(such as a file path or snippet of Gherkin) that would normally be used for determining their structure and
|
|
9
|
+
properties. In these cases, their parent/child relationships and properties can be set directly rather than
|
|
10
|
+
being populated dynamically based on an actual test suite.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
Scenario: Creating abstract models
|
|
14
|
+
Given the models provided by CukeModeler
|
|
15
|
+
Then all of them can be created without further context
|
|
16
|
+
"""
|
|
17
|
+
abstract_model = <model_class>.new
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
Scenario: Nesting models
|
|
21
|
+
Given the models provided by CukeModeler
|
|
22
|
+
Then all of them can contain other models
|
|
23
|
+
"""
|
|
24
|
+
child_model = <model_class>.new
|
|
25
|
+
parent_model = <model_class>.new
|
|
26
|
+
|
|
27
|
+
parent_model.children << child_model
|
|
28
|
+
"""
|
|
29
|
+
And all of them can be contained inside of another model
|
|
30
|
+
"""
|
|
31
|
+
child_model = <model_class>.new
|
|
32
|
+
parent_model = <model_class>.new
|
|
33
|
+
|
|
34
|
+
child_model.parent_model = parent_model
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
Scenario: Accessing the parsing data
|
|
38
|
+
|
|
39
|
+
Note: Directory and feature file models do not store any parsing data because parsing Gherkin source text
|
|
40
|
+
does not come into play until the feature level of modeling.
|
|
41
|
+
|
|
42
|
+
Given the models provided by CukeModeler
|
|
43
|
+
Then all of them provide access to the parsing data that was used to create them
|
|
44
|
+
"""
|
|
45
|
+
model = <model_class>.new(<source_text>)
|
|
46
|
+
|
|
47
|
+
model.parsing_data
|
|
48
|
+
"""
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
Feature: Outline modeling
|
|
2
|
+
|
|
3
|
+
Outline models represent a Scenario Outline portion of a feature. They expose several attributes of the outline
|
|
4
|
+
that they represent, as well as containing models for the steps, tags, and examples that are present in that outline.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given the following gherkin:
|
|
9
|
+
"""
|
|
10
|
+
Scenario Outline: example outline
|
|
11
|
+
|
|
12
|
+
Some background description.
|
|
13
|
+
|
|
14
|
+
Some more.
|
|
15
|
+
Even more.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Given a <setup> step
|
|
19
|
+
When an action step
|
|
20
|
+
Then a <verification> step
|
|
21
|
+
|
|
22
|
+
Examples: example 1
|
|
23
|
+
| setup | verification |
|
|
24
|
+
| x | y |
|
|
25
|
+
Examples: example 2
|
|
26
|
+
| setup | verification |
|
|
27
|
+
| a | b |
|
|
28
|
+
"""
|
|
29
|
+
And an outline model based on that gherkin
|
|
30
|
+
"""
|
|
31
|
+
@model = CukeModeler::Outline.new(<source_text>)
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
Scenario: Modeling an outline's name
|
|
36
|
+
When the outline's name is requested
|
|
37
|
+
"""
|
|
38
|
+
@model.name
|
|
39
|
+
"""
|
|
40
|
+
Then the model returns "example outline"
|
|
41
|
+
|
|
42
|
+
Scenario: Modeling an outline's description
|
|
43
|
+
When the outline's description is requested
|
|
44
|
+
"""
|
|
45
|
+
@model.description
|
|
46
|
+
"""
|
|
47
|
+
Then the model returns
|
|
48
|
+
"""
|
|
49
|
+
Some background description.
|
|
50
|
+
|
|
51
|
+
Some more.
|
|
52
|
+
Even more.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
Scenario: Modeling an outline's steps
|
|
56
|
+
When the outline's steps are requested
|
|
57
|
+
"""
|
|
58
|
+
@model.steps
|
|
59
|
+
"""
|
|
60
|
+
Then the model returns models for the following steps:
|
|
61
|
+
| a <setup> step |
|
|
62
|
+
| an action step |
|
|
63
|
+
| a <verification> step |
|
|
64
|
+
|
|
65
|
+
Scenario: Modeling an outline's examples
|
|
66
|
+
When the outline's examples are requested
|
|
67
|
+
"""
|
|
68
|
+
@model.examples
|
|
69
|
+
"""
|
|
70
|
+
Then the model returns models for the following examples:
|
|
71
|
+
| example 1 |
|
|
72
|
+
| example 2 |
|
|
73
|
+
|
|
74
|
+
Scenario: Modeling an outline's tags
|
|
75
|
+
Given the following gherkin:
|
|
76
|
+
"""
|
|
77
|
+
@feature_tag
|
|
78
|
+
Feature:
|
|
79
|
+
|
|
80
|
+
@outline_tag_1
|
|
81
|
+
@outline_tag_2
|
|
82
|
+
Scenario Outline:
|
|
83
|
+
Given a <setup> step
|
|
84
|
+
When an action step
|
|
85
|
+
Then a <verification> step
|
|
86
|
+
|
|
87
|
+
Examples:
|
|
88
|
+
| setup | verification |
|
|
89
|
+
| x | y |
|
|
90
|
+
"""
|
|
91
|
+
And a feature model based on that gherkin
|
|
92
|
+
"""
|
|
93
|
+
@model = CukeModeler::Feature.new(<source_text>)
|
|
94
|
+
"""
|
|
95
|
+
And the outline model of that feature model
|
|
96
|
+
"""
|
|
97
|
+
@model = @model.outlines.first
|
|
98
|
+
"""
|
|
99
|
+
When the outline's tags are requested
|
|
100
|
+
"""
|
|
101
|
+
@model.tags
|
|
102
|
+
"""
|
|
103
|
+
Then the model returns models for the following tags:
|
|
104
|
+
| @outline_tag_1 |
|
|
105
|
+
| @outline_tag_2 |
|
|
106
|
+
When the outline's inherited tags are requested
|
|
107
|
+
"""
|
|
108
|
+
@model.applied_tags
|
|
109
|
+
"""
|
|
110
|
+
Then the model returns models for the following tags:
|
|
111
|
+
| @feature_tag |
|
|
112
|
+
When all of the outline's tags are requested
|
|
113
|
+
"""
|
|
114
|
+
@model.all_tags
|
|
115
|
+
"""
|
|
116
|
+
Then the model returns models for the following tags:
|
|
117
|
+
| @feature_tag |
|
|
118
|
+
| @outline_tag_1 |
|
|
119
|
+
| @outline_tag_2 |
|
|
120
|
+
|
|
121
|
+
Scenario: Modeling a outline's source line
|
|
122
|
+
Given the following gherkin:
|
|
123
|
+
"""
|
|
124
|
+
Feature:
|
|
125
|
+
|
|
126
|
+
Scenario Outline:
|
|
127
|
+
* a step
|
|
128
|
+
Examples:
|
|
129
|
+
| param |
|
|
130
|
+
| value |
|
|
131
|
+
"""
|
|
132
|
+
And a feature model based on that gherkin
|
|
133
|
+
"""
|
|
134
|
+
@model = CukeModeler::Feature.new(<source_text>)
|
|
135
|
+
"""
|
|
136
|
+
And the outline model of that feature model
|
|
137
|
+
"""
|
|
138
|
+
@model = @model.outlines.first
|
|
139
|
+
"""
|
|
140
|
+
When the outline's source line is requested
|
|
141
|
+
"""
|
|
142
|
+
@model.source_line
|
|
143
|
+
"""
|
|
144
|
+
Then the model returns "3"
|