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
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
@gherkin4
|
|
2
|
-
Feature: Table elements can be modeled.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Acceptance criteria
|
|
6
|
-
|
|
7
|
-
1. All conceptual pieces of a table can be modeled:
|
|
8
|
-
- the table's contents
|
|
9
|
-
- the table's raw element
|
|
10
|
-
|
|
11
|
-
2. Tables can be outputted in a convenient form
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Background: Test file setup.
|
|
15
|
-
Given the following feature file:
|
|
16
|
-
"""
|
|
17
|
-
Feature:
|
|
18
|
-
|
|
19
|
-
Scenario:
|
|
20
|
-
* some data filled step:
|
|
21
|
-
| value 1 | value 2 |
|
|
22
|
-
| value 3 | value 4 |
|
|
23
|
-
* some data filled step:
|
|
24
|
-
| value 1 |
|
|
25
|
-
| value 2 |
|
|
26
|
-
"""
|
|
27
|
-
When the file is read
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Scenario: The table's contents are modeled.
|
|
31
|
-
Then the step "1" table has the following contents:
|
|
32
|
-
| value 1 | value 2 |
|
|
33
|
-
| value 3 | value 4 |
|
|
34
|
-
And the step "2" table has the following contents:
|
|
35
|
-
| value 1 |
|
|
36
|
-
| value 2 |
|
|
37
|
-
|
|
38
|
-
Scenario: The raw table element is modeled.
|
|
39
|
-
Then the table correctly stores its underlying implementation
|
|
40
|
-
|
|
41
|
-
Scenario: Convenient output of a table
|
|
42
|
-
Then the table has convenient output
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
@gherkin4
|
|
2
|
-
Feature: Outputting table elements
|
|
3
|
-
|
|
4
|
-
The output of an element model is a representation of the element as it would
|
|
5
|
-
appear in gherkin.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Scenario: Output of a table that has one row
|
|
9
|
-
Given a table element based on the following gherkin:
|
|
10
|
-
"""
|
|
11
|
-
|value|
|
|
12
|
-
"""
|
|
13
|
-
When it is outputted
|
|
14
|
-
Then the following text is provided:
|
|
15
|
-
"""
|
|
16
|
-
| value |
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
Scenario: Output of a table that has multiple rows
|
|
20
|
-
Given a table element based on the following gherkin:
|
|
21
|
-
"""
|
|
22
|
-
|value1|
|
|
23
|
-
|value2|
|
|
24
|
-
"""
|
|
25
|
-
When it is outputted
|
|
26
|
-
Then the following text is provided:
|
|
27
|
-
"""
|
|
28
|
-
| value1 |
|
|
29
|
-
| value2 |
|
|
30
|
-
"""
|
|
31
|
-
|
|
32
|
-
Scenario: Whitespace buffers are based on the longest value in a column
|
|
33
|
-
Given a table element based on the following gherkin:
|
|
34
|
-
"""
|
|
35
|
-
|value|x|
|
|
36
|
-
|y|another_value|
|
|
37
|
-
"""
|
|
38
|
-
When it is outputted
|
|
39
|
-
Then the following text is provided:
|
|
40
|
-
"""
|
|
41
|
-
| value | x |
|
|
42
|
-
| y | another_value |
|
|
43
|
-
"""
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
@gherkin4
|
|
2
|
-
Feature: Table Row elements can be modeled.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Acceptance criteria
|
|
6
|
-
|
|
7
|
-
1. All conceptual pieces of a table row can be modeled:
|
|
8
|
-
- the row's source line
|
|
9
|
-
- the row's cells
|
|
10
|
-
- the row's raw element
|
|
11
|
-
|
|
12
|
-
2. Rows can be outputted in a convenient form
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Background: Test file setup.
|
|
16
|
-
Given the following feature file:
|
|
17
|
-
"""
|
|
18
|
-
Feature:
|
|
19
|
-
|
|
20
|
-
Scenario:
|
|
21
|
-
* some data filled step:
|
|
22
|
-
| value 1 | value 2 |
|
|
23
|
-
| value 3 | value 4 |
|
|
24
|
-
* some data filled step:
|
|
25
|
-
| value 1 |
|
|
26
|
-
| value 2 |
|
|
27
|
-
"""
|
|
28
|
-
When the file is read
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Scenario: The raw table row element is modeled.
|
|
32
|
-
Then the step table row correctly stores its underlying implementation
|
|
33
|
-
|
|
34
|
-
Scenario: The table row's source line is modeled.
|
|
35
|
-
Then step "1" table row "1" is found to have the following properties:
|
|
36
|
-
| source_line | 5 |
|
|
37
|
-
And step "1" table row "2" is found to have the following properties:
|
|
38
|
-
| source_line | 6 |
|
|
39
|
-
And step "2" table row "1" is found to have the following properties:
|
|
40
|
-
| source_line | 8 |
|
|
41
|
-
And step "2" table row "2" is found to have the following properties:
|
|
42
|
-
| source_line | 9 |
|
|
43
|
-
|
|
44
|
-
Scenario: The table row's cells are modeled.
|
|
45
|
-
Then step "1" table row "1" cells are as follows:
|
|
46
|
-
| value 1 |
|
|
47
|
-
| value 2 |
|
|
48
|
-
And step "1" table row "2" cells are as follows:
|
|
49
|
-
| value 3 |
|
|
50
|
-
| value 4 |
|
|
51
|
-
And step "2" table row "1" cells are as follows:
|
|
52
|
-
| value 1 |
|
|
53
|
-
And step "2" table row "2" cells are as follows:
|
|
54
|
-
| value 2 |
|
|
55
|
-
|
|
56
|
-
Scenario: Convenient output of a table row
|
|
57
|
-
Then the table row has convenient output
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
@gherkin4
|
|
2
|
-
Feature: Outputting table row elements
|
|
3
|
-
|
|
4
|
-
The output of an element model is a representation of the element as it would
|
|
5
|
-
appear in gherkin.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Scenario: Output of a table row that has one cell
|
|
9
|
-
Given a table row element based on the following gherkin:
|
|
10
|
-
"""
|
|
11
|
-
|value|
|
|
12
|
-
"""
|
|
13
|
-
When it is outputted
|
|
14
|
-
Then the following text is provided:
|
|
15
|
-
"""
|
|
16
|
-
| value |
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
Scenario: Output of a table row that has multiple cells
|
|
20
|
-
Given a table row element based on the following gherkin:
|
|
21
|
-
"""
|
|
22
|
-
|value|another_value|
|
|
23
|
-
"""
|
|
24
|
-
When it is outputted
|
|
25
|
-
Then the following text is provided:
|
|
26
|
-
"""
|
|
27
|
-
| value | another_value |
|
|
28
|
-
"""
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
@gherkin4
|
|
2
|
-
Feature: Tag elements can be modeled.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Acceptance criteria
|
|
6
|
-
|
|
7
|
-
1. All conceptual pieces of a tag can be modeled:
|
|
8
|
-
- the tag's name
|
|
9
|
-
- the tags's source line
|
|
10
|
-
- the tags's raw element
|
|
11
|
-
|
|
12
|
-
2. Features can be outputted in a convenient form
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Background: Test file setup.
|
|
16
|
-
Given the following feature file:
|
|
17
|
-
"""
|
|
18
|
-
@feature_tag
|
|
19
|
-
Feature:
|
|
20
|
-
|
|
21
|
-
@outline_tag
|
|
22
|
-
Scenario Outline:
|
|
23
|
-
* a step
|
|
24
|
-
|
|
25
|
-
@example_tag
|
|
26
|
-
Examples:
|
|
27
|
-
| a param |
|
|
28
|
-
"""
|
|
29
|
-
When the file is read
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Scenario: The raw tag element is modeled.
|
|
33
|
-
Then the feature tag correctly stores its underlying implementation
|
|
34
|
-
And the test tag correctly stores its underlying implementation
|
|
35
|
-
And the example tag correctly stores its underlying implementation
|
|
36
|
-
|
|
37
|
-
Scenario: The tag's source line is modeled.
|
|
38
|
-
Then the feature tag source line "1"
|
|
39
|
-
And the test tag source line "4"
|
|
40
|
-
And the example tag source line "8"
|
|
41
|
-
|
|
42
|
-
Scenario: The tag name is modeled.
|
|
43
|
-
Then the feature tag name is "@feature_tag"
|
|
44
|
-
And the test tag name is "@outline_tag"
|
|
45
|
-
And the example tag name is "@example_tag"
|
|
46
|
-
|
|
47
|
-
Scenario: Convenient output of a tag
|
|
48
|
-
Then the tag has convenient output
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
@gherkin4
|
|
2
|
-
Feature: Outputting tag elements
|
|
3
|
-
|
|
4
|
-
The output of an element model is a representation of the element as it would
|
|
5
|
-
appear in gherkin.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Scenario: Output of a tag that has a name
|
|
9
|
-
Given a tag element based on the following gherkin:
|
|
10
|
-
"""
|
|
11
|
-
@some_tag
|
|
12
|
-
"""
|
|
13
|
-
When it is outputted
|
|
14
|
-
Then the following text is provided:
|
|
15
|
-
"""
|
|
16
|
-
@some_tag
|
|
17
|
-
"""
|
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
When /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example blocks are as follows:$/ do |file, test, names|
|
|
2
|
-
file ||= 1
|
|
3
|
-
test ||= 1
|
|
4
|
-
|
|
5
|
-
expected = names.raw.flatten
|
|
6
|
-
actual = @parsed_files[file - 1].feature.tests[test - 1].examples.collect { |example| example.name }
|
|
7
|
-
|
|
8
|
-
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? is found to have the following properties:$/ do |file, test, example, properties|
|
|
12
|
-
file ||= 1
|
|
13
|
-
test ||= 1
|
|
14
|
-
example ||= 1
|
|
15
|
-
|
|
16
|
-
properties = properties.rows_hash
|
|
17
|
-
|
|
18
|
-
properties.each do |property, value|
|
|
19
|
-
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].send(property.to_sym).to_s.should == value
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? row(?: "([^"]*)")? is found to have the following properties:$/ do |file, test, example, row, properties|
|
|
24
|
-
file ||= 1
|
|
25
|
-
test ||= 1
|
|
26
|
-
example ||= 1
|
|
27
|
-
row ||= 1
|
|
28
|
-
|
|
29
|
-
properties = properties.rows_hash
|
|
30
|
-
|
|
31
|
-
properties.each do |property, value|
|
|
32
|
-
expected = value
|
|
33
|
-
actual = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].row_elements[row - 1].send(property.to_sym).to_s
|
|
34
|
-
|
|
35
|
-
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? has the following description:$/ do |file, test, example, text|
|
|
40
|
-
file ||= 1
|
|
41
|
-
test ||= 1
|
|
42
|
-
example ||= 1
|
|
43
|
-
|
|
44
|
-
new_description = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].description_text
|
|
45
|
-
old_description = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].description
|
|
46
|
-
|
|
47
|
-
new_description.should == text
|
|
48
|
-
old_description.should == remove_whitespace(text)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? has no description$/ do |file, test, example|
|
|
52
|
-
file ||= 1
|
|
53
|
-
test ||= 1
|
|
54
|
-
example ||= 1
|
|
55
|
-
|
|
56
|
-
new_description = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].description_text
|
|
57
|
-
old_description = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].description
|
|
58
|
-
|
|
59
|
-
new_description.should == ''
|
|
60
|
-
old_description.should == []
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? is found to have the following tags:$/ do |file, test, example, expected_tags|
|
|
64
|
-
file ||= 1
|
|
65
|
-
test ||= 1
|
|
66
|
-
example ||= 1
|
|
67
|
-
|
|
68
|
-
expected_tags = expected_tags.raw.flatten
|
|
69
|
-
|
|
70
|
-
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].tags.should == expected_tags
|
|
71
|
-
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].tag_elements.collect { |tag| tag.name }.should == expected_tags
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? is found to have the following applied tags:$/ do |file, test, example, expected_tags|
|
|
75
|
-
file ||= 1
|
|
76
|
-
test ||= 1
|
|
77
|
-
example ||= 1
|
|
78
|
-
|
|
79
|
-
expected_tags = expected_tags.raw.flatten.sort
|
|
80
|
-
|
|
81
|
-
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].applied_tags.sort.should == expected_tags
|
|
82
|
-
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].applied_tag_elements.collect { |tag| tag.name }.sort.should == expected_tags
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? has no tags$/ do |file, test, example|
|
|
86
|
-
file ||= 1
|
|
87
|
-
test ||= 1
|
|
88
|
-
example ||= 1
|
|
89
|
-
|
|
90
|
-
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].tags.should == []
|
|
91
|
-
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].tag_elements.collect { |tag| tag.name }.should == []
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? rows are as follows:$/ do |file, test, example, rows|
|
|
95
|
-
file ||= 1
|
|
96
|
-
test ||= 1
|
|
97
|
-
example ||= 1
|
|
98
|
-
|
|
99
|
-
rows = rows.raw.flatten
|
|
100
|
-
example = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1]
|
|
101
|
-
|
|
102
|
-
expected = rows.collect { |row| row.split(',') }
|
|
103
|
-
|
|
104
|
-
actual = example.row_elements[1..example.row_elements.count].collect { |row| row.cells }
|
|
105
|
-
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
|
106
|
-
|
|
107
|
-
# todo - remove once Hash rows are no longer supported
|
|
108
|
-
actual = example.rows.collect { |row| example.parameters.collect { |parameter| row[parameter] } }
|
|
109
|
-
assert(actual == expected, "Expected: #{expected.inspect}\n but was: #{actual.inspect}")
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
When /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? has the following rows added to it:$/ do |file, test, example, rows|
|
|
113
|
-
file ||= 1
|
|
114
|
-
test ||= 1
|
|
115
|
-
example ||= 1
|
|
116
|
-
|
|
117
|
-
rows = rows.raw.flatten
|
|
118
|
-
|
|
119
|
-
rows.each do |row|
|
|
120
|
-
row = row.split(',')
|
|
121
|
-
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].add_row(row)
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
When /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? has the following rows removed from it:$/ do |file, test, example, rows|
|
|
126
|
-
file ||= 1
|
|
127
|
-
test ||= 1
|
|
128
|
-
example ||= 1
|
|
129
|
-
|
|
130
|
-
rows = rows.raw.flatten
|
|
131
|
-
|
|
132
|
-
rows.each do |row|
|
|
133
|
-
row = row.split(',')
|
|
134
|
-
@parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].remove_row(row)
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? parameters are as follows:$/ do |file, test, example, parameters|
|
|
139
|
-
file ||= 1
|
|
140
|
-
test ||= 1
|
|
141
|
-
example ||= 1
|
|
142
|
-
|
|
143
|
-
expected = parameters.raw.flatten
|
|
144
|
-
actual = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].parameters
|
|
145
|
-
|
|
146
|
-
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? row(?: "([^"]*)")? cells are as follows:$/ do |file, test, example, row, cells|
|
|
150
|
-
file ||= 1
|
|
151
|
-
test ||= 1
|
|
152
|
-
example ||= 1
|
|
153
|
-
row ||= 1
|
|
154
|
-
|
|
155
|
-
expected = cells.raw.flatten
|
|
156
|
-
actual = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].row_elements[row - 1].cells
|
|
157
|
-
|
|
158
|
-
assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? has no descriptive lines$/ do |file, test, example|
|
|
162
|
-
file ||= 1
|
|
163
|
-
test ||= 1
|
|
164
|
-
example ||= 1
|
|
165
|
-
|
|
166
|
-
assert @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].description == []
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? has no parameters$/ do |file, test, example|
|
|
170
|
-
file ||= 1
|
|
171
|
-
test ||= 1
|
|
172
|
-
example ||= 1
|
|
173
|
-
|
|
174
|
-
assert @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].parameters == []
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? has no rows$/ do |file, test, example|
|
|
178
|
-
file ||= 1
|
|
179
|
-
test ||= 1
|
|
180
|
-
example ||= 1
|
|
181
|
-
|
|
182
|
-
example = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1]
|
|
183
|
-
|
|
184
|
-
example.row_elements[1..example.row_elements.count].should be_empty
|
|
185
|
-
#todo - remove once Hash rows are no longer supported
|
|
186
|
-
example.rows.should be_empty
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? row(?: "([^"]*)")? correctly stores its underlying implementation$/ do |file, test, example, row|
|
|
190
|
-
file ||= 1
|
|
191
|
-
test ||= 1
|
|
192
|
-
example ||= 1
|
|
193
|
-
row ||= 1
|
|
194
|
-
|
|
195
|
-
raw_element = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].row_elements[row - 1].raw_element
|
|
196
|
-
if Gem.loaded_specs['gherkin'].version.version[/^3|4/]
|
|
197
|
-
raw_element.has_key?(:cells).should be_true
|
|
198
|
-
else
|
|
199
|
-
raw_element.has_key?('cells').should be_true
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? example block(?: "([^"]*)")? correctly stores its underlying implementation$/ do |file, test, example|
|
|
204
|
-
file ||= 1
|
|
205
|
-
test ||= 1
|
|
206
|
-
example ||= 1
|
|
207
|
-
|
|
208
|
-
raw_element = @parsed_files[file - 1].feature.tests[test - 1].examples[example - 1].raw_element
|
|
209
|
-
if Gem.loaded_specs['gherkin'].version.version[/^3|4/]
|
|
210
|
-
raw_element.has_key?(:tableHeader).should be_true
|
|
211
|
-
else
|
|
212
|
-
raw_element.has_key?('rows').should be_true
|
|
213
|
-
end
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
Then(/^the row has convenient output$/) do
|
|
217
|
-
@parsed_files.first.feature.tests.first.examples.first.row_elements.first.method(:to_s).owner.should == CukeModeler::Row
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
Given(/^a row element based on the following gherkin:$/) do |row_text|
|
|
221
|
-
@element = CukeModeler::Row.new(row_text)
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
Given(/^a row element$/) do
|
|
225
|
-
@element = CukeModeler::Row.new
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
When(/^the row element has no cells$/) do
|
|
229
|
-
@element.cells = []
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
Then(/^the example block has convenient output$/) do
|
|
233
|
-
@parsed_files.first.feature.tests.first.examples.first.method(:to_s).owner.should == CukeModeler::Example
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
Given(/^an example element based on the following gherkin:$/) do |example_text|
|
|
237
|
-
@element = CukeModeler::Example.new(example_text)
|
|
238
|
-
end
|
|
239
|
-
|
|
240
|
-
Given(/^an example element$/) do
|
|
241
|
-
@element = CukeModeler::Example.new
|
|
242
|
-
end
|
|
243
|
-
|
|
244
|
-
When(/^the example element has no parameters or rows$/) do
|
|
245
|
-
@element.parameters = []
|
|
246
|
-
|
|
247
|
-
#todo - remove once Hash rows are no longer supported
|
|
248
|
-
@element.rows = []
|
|
249
|
-
@element.row_elements = []
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
Then(/^the outline has convenient output$/) do
|
|
253
|
-
@parsed_files.first.feature.tests.first.method(:to_s).owner.should == CukeModeler::Outline
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
Given(/^an outline element based on the following gherkin:$/) do |outline_text|
|
|
257
|
-
@element = CukeModeler::Outline.new(outline_text)
|
|
258
|
-
end
|