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.
Files changed (252) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +17 -17
  3. data/.travis.yml +1 -1
  4. data/Gemfile +4 -0
  5. data/History.rdoc +71 -3
  6. data/LICENSE.txt +22 -22
  7. data/README.md +24 -10
  8. data/Rakefile +2 -12
  9. data/cuke_modeler.gemspec +1 -1
  10. data/features/analysis/test_comparison.feature +37 -122
  11. data/features/modeling/background_modeling.feature +77 -0
  12. data/features/modeling/background_output.feature +42 -0
  13. data/features/modeling/cell_modeling.feature +23 -0
  14. data/features/modeling/cell_output.feature +22 -0
  15. data/features/modeling/directory_modeling.feature +65 -0
  16. data/features/modeling/directory_output.feature +12 -0
  17. data/features/modeling/doc_string_modeling.feature +61 -0
  18. data/features/modeling/doc_string_output.feature +32 -0
  19. data/features/modeling/example_modeling.feature +125 -0
  20. data/features/modeling/example_output.feature +39 -0
  21. data/features/modeling/feature_file_modeling.feature +40 -0
  22. data/features/modeling/feature_file_output.feature +12 -0
  23. data/features/modeling/feature_modeling.feature +109 -0
  24. data/features/modeling/feature_output.feature +104 -0
  25. data/features/modeling/model_output.feature +22 -0
  26. data/features/modeling/model_structure.feature +48 -0
  27. data/features/modeling/outline_modeling.feature +144 -0
  28. data/features/modeling/outline_output.feature +69 -0
  29. data/features/modeling/row_modeling.feature +48 -0
  30. data/features/modeling/row_output.feature +22 -0
  31. data/features/modeling/scenario_modeling.feature +118 -0
  32. data/features/modeling/scenario_output.feature +45 -0
  33. data/features/modeling/step_modeling.feature +84 -0
  34. data/features/modeling/step_output.feature +29 -0
  35. data/features/modeling/table_modeling.feature +50 -0
  36. data/features/modeling/table_output.feature +24 -0
  37. data/features/modeling/tag_modeling.feature +43 -0
  38. data/features/modeling/tag_output.feature +22 -0
  39. data/features/step_definitions/action_steps.rb +11 -1
  40. data/features/step_definitions/background_steps.rb +1 -85
  41. data/features/step_definitions/directory_steps.rb +2 -48
  42. data/features/step_definitions/doc_string_steps.rb +1 -67
  43. data/features/step_definitions/feature_file_steps.rb +2 -37
  44. data/features/step_definitions/feature_steps.rb +4 -100
  45. data/features/step_definitions/modeling_steps.rb +44 -0
  46. data/features/step_definitions/setup_steps.rb +19 -41
  47. data/features/step_definitions/step_steps.rb +2 -166
  48. data/features/step_definitions/table_steps.rb +1 -58
  49. data/features/step_definitions/tag_steps.rb +2 -72
  50. data/features/step_definitions/verification_steps.rb +152 -4
  51. data/features/support/env.rb +4 -6
  52. data/gemfiles/{gherkin.gemfile → gherkin2.gemfile} +4 -0
  53. data/gemfiles/gherkin3.gemfile +4 -0
  54. data/gemfiles/gherkin4.gemfile +4 -0
  55. data/lib/cuke_modeler.rb +24 -22
  56. data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +103 -31
  57. data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +103 -40
  58. data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +111 -50
  59. data/lib/cuke_modeler/containing.rb +255 -4
  60. data/lib/cuke_modeler/described.rb +28 -0
  61. data/lib/cuke_modeler/models/background.rb +66 -0
  62. data/lib/cuke_modeler/models/cell.rb +48 -0
  63. data/lib/cuke_modeler/models/directory.rb +95 -0
  64. data/lib/cuke_modeler/models/doc_string.rb +59 -0
  65. data/lib/cuke_modeler/models/example.rb +167 -0
  66. data/lib/cuke_modeler/models/feature.rb +106 -0
  67. data/lib/cuke_modeler/models/feature_file.rb +64 -0
  68. data/lib/cuke_modeler/models/model.rb +32 -0
  69. data/lib/cuke_modeler/models/outline.rb +79 -0
  70. data/lib/cuke_modeler/models/row.rb +49 -0
  71. data/lib/cuke_modeler/models/scenario.rb +69 -0
  72. data/lib/cuke_modeler/models/step.rb +68 -0
  73. data/lib/cuke_modeler/models/table.rb +67 -0
  74. data/lib/cuke_modeler/models/tag.rb +46 -0
  75. data/lib/cuke_modeler/named.rb +19 -0
  76. data/lib/cuke_modeler/nested.rb +22 -15
  77. data/lib/cuke_modeler/parsed.rb +11 -0
  78. data/lib/cuke_modeler/parsing.rb +66 -83
  79. data/lib/cuke_modeler/sourceable.rb +3 -11
  80. data/lib/cuke_modeler/stepped.rb +24 -0
  81. data/lib/cuke_modeler/taggable.rb +6 -29
  82. data/lib/cuke_modeler/version.rb +2 -1
  83. data/spec/integration/background_integration_spec.rb +332 -7
  84. data/spec/integration/cell_integration_spec.rb +321 -0
  85. data/spec/integration/directory_integration_spec.rb +175 -9
  86. data/spec/integration/doc_string_integration_spec.rb +318 -7
  87. data/spec/integration/example_integration_spec.rb +602 -19
  88. data/spec/integration/feature_file_integration_spec.rb +98 -3
  89. data/spec/integration/feature_integration_spec.rb +445 -27
  90. data/spec/integration/gherkin_2_adapter_spec.rb +122 -0
  91. data/spec/integration/gherkin_3_adapter_spec.rb +125 -0
  92. data/spec/integration/gherkin_4_adapter_spec.rb +123 -0
  93. data/spec/integration/model_integration_spec.rb +15 -0
  94. data/spec/integration/nested_integration_spec.rb +91 -0
  95. data/spec/integration/outline_integration_spec.rb +485 -12
  96. data/spec/integration/parsing_integration_spec.rb +85 -0
  97. data/spec/integration/row_integration_spec.rb +221 -18
  98. data/spec/integration/scenario_integration_spec.rb +368 -14
  99. data/spec/integration/shared/models_integration_specs.rb +18 -0
  100. data/spec/integration/step_integration_spec.rb +328 -77
  101. data/spec/integration/table_integration_spec.rb +242 -20
  102. data/spec/integration/tag_integration_spec.rb +178 -13
  103. data/spec/spec_helper.rb +32 -18
  104. data/spec/unit/background_unit_spec.rb +24 -44
  105. data/spec/unit/cell_unit_spec.rb +73 -0
  106. data/spec/unit/described_unit_spec.rb +23 -0
  107. data/spec/unit/directory_unit_spec.rb +52 -62
  108. data/spec/unit/doc_string_unit_spec.rb +47 -100
  109. data/spec/unit/example_unit_spec.rb +50 -296
  110. data/spec/unit/feature_file_unit_spec.rb +53 -52
  111. data/spec/unit/feature_unit_spec.rb +39 -83
  112. data/spec/unit/model_unit_spec.rb +15 -0
  113. data/spec/unit/named_unit_spec.rb +23 -0
  114. data/spec/unit/nested_unit_spec.rb +24 -21
  115. data/spec/unit/outline_unit_spec.rb +46 -69
  116. data/spec/unit/parsed_unit_spec.rb +27 -0
  117. data/spec/unit/parsing_unit_spec.rb +2 -70
  118. data/spec/unit/row_unit_spec.rb +22 -51
  119. data/spec/unit/scenario_unit_spec.rb +27 -59
  120. data/spec/unit/{bare_bones_unit_specs.rb → shared/bare_bones_models_unit_specs.rb} +2 -2
  121. data/spec/unit/shared/containing_models_unit_specs.rb +18 -0
  122. data/spec/unit/shared/described_models_unit_specs.rb +38 -0
  123. data/spec/unit/shared/models_unit_specs.rb +15 -0
  124. data/spec/unit/shared/named_models_unit_specs.rb +39 -0
  125. data/spec/unit/shared/nested_models_unit_specs.rb +51 -0
  126. data/spec/unit/shared/parsed_models_unit_specs.rb +39 -0
  127. data/spec/unit/shared/prepopulated_models_unit_specs.rb +18 -0
  128. data/spec/unit/shared/sourced_models_unit_specs.rb +39 -0
  129. data/spec/unit/shared/stepped_models_unit_specs.rb +46 -0
  130. data/spec/unit/shared/stringifiable_models_unit_specs.rb +18 -0
  131. data/spec/unit/shared/tagged_models_unit_specs.rb +72 -0
  132. data/spec/unit/sourceable_unit_spec.rb +12 -4
  133. data/spec/unit/step_unit_spec.rb +40 -231
  134. data/spec/unit/stepped_unit_spec.rb +23 -0
  135. data/spec/unit/table_unit_spec.rb +27 -89
  136. data/spec/unit/tag_unit_spec.rb +30 -53
  137. data/spec/unit/taggable_unit_spec.rb +26 -42
  138. data/todo.txt +32 -0
  139. metadata +135 -217
  140. data/features/analysis/test_manipulation.feature +0 -37
  141. data/features/modeling/gherkin/background_modeling.feature +0 -65
  142. data/features/modeling/gherkin/background_output.feature +0 -131
  143. data/features/modeling/gherkin/directory_modeling.feature +0 -110
  144. data/features/modeling/gherkin/directory_output.feature +0 -14
  145. data/features/modeling/gherkin/doc_string_modeling.feature +0 -53
  146. data/features/modeling/gherkin/doc_string_output.feature +0 -72
  147. data/features/modeling/gherkin/example_modeling.feature +0 -101
  148. data/features/modeling/gherkin/example_output.feature +0 -193
  149. data/features/modeling/gherkin/feature_file_modeling.feature +0 -54
  150. data/features/modeling/gherkin/feature_file_output.feature +0 -14
  151. data/features/modeling/gherkin/feature_modeling.feature +0 -154
  152. data/features/modeling/gherkin/feature_output.feature +0 -245
  153. data/features/modeling/gherkin/outline_modeling.feature +0 -90
  154. data/features/modeling/gherkin/outline_output.feature +0 -198
  155. data/features/modeling/gherkin/row_modeling.feature +0 -68
  156. data/features/modeling/gherkin/row_output.feature +0 -28
  157. data/features/modeling/gherkin/scenario_modeling.feature +0 -79
  158. data/features/modeling/gherkin/scenario_output.feature +0 -148
  159. data/features/modeling/gherkin/step_modeling.feature +0 -75
  160. data/features/modeling/gherkin/step_output.feature +0 -53
  161. data/features/modeling/gherkin/table_modeling.feature +0 -42
  162. data/features/modeling/gherkin/table_output.feature +0 -43
  163. data/features/modeling/gherkin/table_row_modeling.feature +0 -57
  164. data/features/modeling/gherkin/table_row_output.feature +0 -28
  165. data/features/modeling/gherkin/tag_modeling.feature +0 -48
  166. data/features/modeling/gherkin/tag_output.feature +0 -17
  167. data/features/modeling/gherkin3/background_modeling.feature +0 -64
  168. data/features/modeling/gherkin3/background_output.feature +0 -131
  169. data/features/modeling/gherkin3/directory_modeling.feature +0 -110
  170. data/features/modeling/gherkin3/directory_output.feature +0 -14
  171. data/features/modeling/gherkin3/doc_string_modeling.feature +0 -53
  172. data/features/modeling/gherkin3/doc_string_output.feature +0 -72
  173. data/features/modeling/gherkin3/example_modeling.feature +0 -100
  174. data/features/modeling/gherkin3/example_output.feature +0 -207
  175. data/features/modeling/gherkin3/feature_file_modeling.feature +0 -54
  176. data/features/modeling/gherkin3/feature_file_output.feature +0 -14
  177. data/features/modeling/gherkin3/feature_modeling.feature +0 -155
  178. data/features/modeling/gherkin3/feature_output.feature +0 -249
  179. data/features/modeling/gherkin3/outline_modeling.feature +0 -89
  180. data/features/modeling/gherkin3/outline_output.feature +0 -255
  181. data/features/modeling/gherkin3/row_modeling.feature +0 -68
  182. data/features/modeling/gherkin3/row_output.feature +0 -28
  183. data/features/modeling/gherkin3/scenario_modeling.feature +0 -78
  184. data/features/modeling/gherkin3/scenario_output.feature +0 -148
  185. data/features/modeling/gherkin3/step_modeling.feature +0 -75
  186. data/features/modeling/gherkin3/step_output.feature +0 -53
  187. data/features/modeling/gherkin3/table_modeling.feature +0 -42
  188. data/features/modeling/gherkin3/table_output.feature +0 -43
  189. data/features/modeling/gherkin3/table_row_modeling.feature +0 -57
  190. data/features/modeling/gherkin3/table_row_output.feature +0 -28
  191. data/features/modeling/gherkin3/tag_modeling.feature +0 -49
  192. data/features/modeling/gherkin3/tag_output.feature +0 -17
  193. data/features/modeling/gherkin4/background_modeling.feature +0 -64
  194. data/features/modeling/gherkin4/background_output.feature +0 -131
  195. data/features/modeling/gherkin4/directory_modeling.feature +0 -110
  196. data/features/modeling/gherkin4/directory_output.feature +0 -14
  197. data/features/modeling/gherkin4/doc_string_modeling.feature +0 -53
  198. data/features/modeling/gherkin4/doc_string_output.feature +0 -72
  199. data/features/modeling/gherkin4/example_modeling.feature +0 -100
  200. data/features/modeling/gherkin4/example_output.feature +0 -193
  201. data/features/modeling/gherkin4/feature_file_modeling.feature +0 -54
  202. data/features/modeling/gherkin4/feature_file_output.feature +0 -14
  203. data/features/modeling/gherkin4/feature_modeling.feature +0 -153
  204. data/features/modeling/gherkin4/feature_output.feature +0 -245
  205. data/features/modeling/gherkin4/outline_modeling.feature +0 -89
  206. data/features/modeling/gherkin4/outline_output.feature +0 -198
  207. data/features/modeling/gherkin4/row_modeling.feature +0 -68
  208. data/features/modeling/gherkin4/row_output.feature +0 -28
  209. data/features/modeling/gherkin4/scenario_modeling.feature +0 -78
  210. data/features/modeling/gherkin4/scenario_output.feature +0 -148
  211. data/features/modeling/gherkin4/step_modeling.feature +0 -75
  212. data/features/modeling/gherkin4/step_output.feature +0 -53
  213. data/features/modeling/gherkin4/table_modeling.feature +0 -42
  214. data/features/modeling/gherkin4/table_output.feature +0 -43
  215. data/features/modeling/gherkin4/table_row_modeling.feature +0 -57
  216. data/features/modeling/gherkin4/table_row_output.feature +0 -28
  217. data/features/modeling/gherkin4/tag_modeling.feature +0 -48
  218. data/features/modeling/gherkin4/tag_output.feature +0 -17
  219. data/features/step_definitions/outline_steps.rb +0 -258
  220. data/features/step_definitions/test_steps.rb +0 -123
  221. data/lib/cuke_modeler/background.rb +0 -38
  222. data/lib/cuke_modeler/directory.rb +0 -83
  223. data/lib/cuke_modeler/doc_string.rb +0 -87
  224. data/lib/cuke_modeler/example.rb +0 -195
  225. data/lib/cuke_modeler/feature.rb +0 -147
  226. data/lib/cuke_modeler/feature_element.rb +0 -73
  227. data/lib/cuke_modeler/feature_file.rb +0 -77
  228. data/lib/cuke_modeler/outline.rb +0 -68
  229. data/lib/cuke_modeler/raw.rb +0 -20
  230. data/lib/cuke_modeler/row.rb +0 -64
  231. data/lib/cuke_modeler/scenario.rb +0 -45
  232. data/lib/cuke_modeler/step.rb +0 -216
  233. data/lib/cuke_modeler/table.rb +0 -90
  234. data/lib/cuke_modeler/table_row.rb +0 -64
  235. data/lib/cuke_modeler/tag.rb +0 -62
  236. data/lib/cuke_modeler/test_element.rb +0 -79
  237. data/lib/cuke_modeler/world.rb +0 -113
  238. data/spec/integration/table_row_integration_spec.rb +0 -76
  239. data/spec/integration/world_integration_spec.rb +0 -14
  240. data/spec/unit/containing_element_unit_specs.rb +0 -18
  241. data/spec/unit/feature_element_unit_spec.rb +0 -19
  242. data/spec/unit/feature_element_unit_specs.rb +0 -52
  243. data/spec/unit/nested_element_unit_specs.rb +0 -39
  244. data/spec/unit/prepopulated_unit_specs.rb +0 -14
  245. data/spec/unit/raw_element_unit_specs.rb +0 -27
  246. data/spec/unit/raw_unit_spec.rb +0 -28
  247. data/spec/unit/sourced_element_unit_specs.rb +0 -18
  248. data/spec/unit/table_row_unit_spec.rb +0 -102
  249. data/spec/unit/tagged_element_unit_specs.rb +0 -67
  250. data/spec/unit/test_element_unit_spec.rb +0 -54
  251. data/spec/unit/test_element_unit_specs.rb +0 -34
  252. data/spec/unit/world_unit_spec.rb +0 -140
@@ -0,0 +1,69 @@
1
+ Feature: Outline output
2
+
3
+ An outline model's string output is a Gherkin representation of itself.
4
+
5
+
6
+ Scenario: Outputting an outline model
7
+ Given the following gherkin:
8
+ """
9
+ @tag1@tag2
10
+ @tag3
11
+ Scenario Outline: An outline with everything that it could have
12
+
13
+ Some description.
14
+ Some more description.
15
+
16
+ * a step
17
+ |value|
18
+ * a <value> step
19
+ \"\"\"
20
+ some string
21
+ \"\"\"
22
+
23
+ Examples:
24
+ Some description.
25
+ Some more description.
26
+ | value |
27
+ | x |
28
+ @example_tag
29
+
30
+ Examples:
31
+ | value |
32
+ | y |
33
+ """
34
+ And an outline model based on that gherkin
35
+ """
36
+ @model = CukeModeler::Outline.new(<source_text>)
37
+ """
38
+ When the model is output as a string
39
+ """
40
+ @model.to_s
41
+ """
42
+ Then the following text is provided:
43
+ """
44
+ @tag1 @tag2 @tag3
45
+ Scenario Outline: An outline with everything that it could have
46
+
47
+ Some description.
48
+ Some more description.
49
+
50
+ * a step
51
+ | value |
52
+ * a <value> step
53
+ \"\"\"
54
+ some string
55
+ \"\"\"
56
+
57
+ Examples:
58
+
59
+ Some description.
60
+ Some more description.
61
+
62
+ | value |
63
+ | x |
64
+
65
+ @example_tag
66
+ Examples:
67
+ | value |
68
+ | y |
69
+ """
@@ -0,0 +1,48 @@
1
+ Feature: Row modeling
2
+
3
+ Row models represent an individual row in a step or example table. They expose several attributes of the row
4
+ that they represent.
5
+
6
+
7
+ Background:
8
+ Given the following gherkin:
9
+ """
10
+ | foo | bar |
11
+ """
12
+ And a row model based on that gherkin
13
+ """
14
+ @model = CukeModeler::Row.new(<source_text>)
15
+ """
16
+
17
+
18
+ Scenario: Modeling a rows's cells
19
+ When the rows's cells are requested
20
+ """
21
+ @model.cells
22
+ """
23
+ Then the model returns models for the following cells:
24
+ | foo |
25
+ | bar |
26
+
27
+ Scenario: Modeling a row's source line
28
+ Given the following gherkin:
29
+ """
30
+ Feature:
31
+
32
+ Scenario:
33
+ * a step
34
+ | foo |
35
+ """
36
+ And a feature model based on that gherkin
37
+ """
38
+ @model = CukeModeler::Feature.new(<source_text>)
39
+ """
40
+ And the row model inside of that feature model
41
+ """
42
+ @model = @model.tests.first.steps.first.block.rows.first
43
+ """
44
+ When the rows's source line is requested
45
+ """
46
+ @model.source_line
47
+ """
48
+ Then the model returns "5"
@@ -0,0 +1,22 @@
1
+ Feature: Row output
2
+
3
+ A row model's string output is a Gherkin representation of itself.
4
+
5
+
6
+ Scenario: Outputting a row model
7
+ Given the following gherkin:
8
+ """
9
+ |foo|bar|
10
+ """
11
+ And a row model based on that gherkin
12
+ """
13
+ @model = CukeModeler::Row.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 | bar |
22
+ """
@@ -0,0 +1,118 @@
1
+ Feature: Scenario modeling
2
+
3
+ Scenario models represent a Scenario portion of a feature. They expose several attributes of the scenario
4
+ that they represent, as well as containing models for the steps and tags that are present in that scenario.
5
+
6
+
7
+ Background:
8
+ Given the following gherkin:
9
+ """
10
+ Scenario: example scenario
11
+
12
+ Some background description.
13
+
14
+ Some more.
15
+ Even more.
16
+
17
+ Given a setup step
18
+ When an action step
19
+ Then a verification step
20
+ """
21
+ And a scenario model based on that gherkin
22
+ """
23
+ @model = CukeModeler::Scenario.new(<source_text>)
24
+ """
25
+
26
+
27
+ Scenario: Modeling a scenario's name
28
+ When the scenario's name is requested
29
+ """
30
+ @model.name
31
+ """
32
+ Then the model returns "example scenario"
33
+
34
+ Scenario: Modeling a scenario's description
35
+ When the scenario'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 scenario's steps
48
+ When the scenario's steps are requested
49
+ """
50
+ @model.steps
51
+ """
52
+ Then the model returns models for the following steps:
53
+ | a setup step |
54
+ | an action step |
55
+ | a verification step |
56
+
57
+ Scenario: Modeling a scenario's tags
58
+ Given the following gherkin:
59
+ """
60
+ @feature_tag
61
+ Feature:
62
+
63
+ @scenario_tag_1
64
+ @scenario_tag_2
65
+ Scenario:
66
+ * a step
67
+ """
68
+ And a feature model based on that gherkin
69
+ """
70
+ @model = CukeModeler::Feature.new(<source_text>)
71
+ """
72
+ And the scenario model of that feature model
73
+ """
74
+ @model = @model.scenarios.first
75
+ """
76
+ When the scenario's tags are requested
77
+ """
78
+ @model.tags
79
+ """
80
+ Then the model returns models for the following tags:
81
+ | @scenario_tag_1 |
82
+ | @scenario_tag_2 |
83
+ When the scenario's inherited tags are requested
84
+ """
85
+ @model.applied_tags
86
+ """
87
+ Then the model returns models for the following tags:
88
+ | @feature_tag |
89
+ When all of the scenario's tags are requested
90
+ """
91
+ @model.all_tags
92
+ """
93
+ Then the model returns models for the following tags:
94
+ | @feature_tag |
95
+ | @scenario_tag_1 |
96
+ | @scenario_tag_2 |
97
+
98
+ Scenario: Modeling a scenario's source line
99
+ Given the following gherkin:
100
+ """
101
+ Feature:
102
+
103
+ Scenario:
104
+ * a step
105
+ """
106
+ And a feature model based on that gherkin
107
+ """
108
+ @model = CukeModeler::Feature.new(<source_text>)
109
+ """
110
+ And the scenario model of that feature model
111
+ """
112
+ @model = @model.scenarios.first
113
+ """
114
+ When the scenario's source line is requested
115
+ """
116
+ @model.source_line
117
+ """
118
+ Then the model returns "3"
@@ -0,0 +1,45 @@
1
+ Feature: Scenario output
2
+
3
+ A scenario model's string output is a Gherkin representation of itself.
4
+
5
+
6
+ Scenario: Outputting a scenario model
7
+ Given the following gherkin:
8
+ """
9
+ @tag1@tag2
10
+ @tag3
11
+ Scenario: A scenario with everything that it could have
12
+
13
+ Including a description
14
+ and then some.
15
+
16
+ * a step
17
+ |value|
18
+ * another step
19
+ \"\"\"
20
+ some string
21
+ \"\"\"
22
+ """
23
+ And a scenario model based on that gherkin
24
+ """
25
+ @model = CukeModeler::Scenario.new(<source_text>)
26
+ """
27
+ When the model is output as a string
28
+ """
29
+ @model.to_s
30
+ """
31
+ Then the following text is provided:
32
+ """
33
+ @tag1 @tag2 @tag3
34
+ Scenario: A scenario with everything that it could have
35
+
36
+ Including a description
37
+ and then some.
38
+
39
+ * a step
40
+ | value |
41
+ * another step
42
+ \"\"\"
43
+ some string
44
+ \"\"\"
45
+ """
@@ -0,0 +1,84 @@
1
+ Feature: Step modeling
2
+
3
+ Step models represent represent the a step in a scenario, outline, or background. They expose several attributes
4
+ of the step that they represent.
5
+
6
+
7
+ Background:
8
+ Given the following gherkin:
9
+ """
10
+ * a step
11
+ """
12
+ And a step model based on that gherkin
13
+ """
14
+ @model = CukeModeler::Step.new(<source_text>)
15
+ """
16
+
17
+
18
+ Scenario: Modeling a step's keyword
19
+ When the step's keyword is requested
20
+ """
21
+ @model.keyword
22
+ """
23
+ Then the model returns "*"
24
+
25
+ Scenario: Modeling a step's base text
26
+ When the step's base text is requested
27
+ """
28
+ @model.text
29
+ """
30
+ Then the model returns "a step"
31
+
32
+ Scenario: Modeling a step's source line
33
+ Given the following gherkin:
34
+ """
35
+ Feature:
36
+
37
+ Scenario:
38
+ * a step
39
+ """
40
+ And a feature model based on that gherkin
41
+ """
42
+ @model = CukeModeler::Feature.new(<source_text>)
43
+ """
44
+ And the step model inside of that feature model
45
+ """
46
+ @model = @model.tests.first.steps.first
47
+ """
48
+ When the step's source line is requested
49
+ """
50
+ @model.source_line
51
+ """
52
+ Then the model returns "4"
53
+
54
+ Scenario: Modeling a step's table
55
+ Given a step model based on the following gherkin:
56
+ """
57
+ * a step
58
+ | value 1 |
59
+ | value 2 |
60
+ """
61
+ When the step's table is requested
62
+ """
63
+ @model.block
64
+ """
65
+ Then the model returns a model for the following table:
66
+ | value 1 |
67
+ | value 2 |
68
+
69
+ Scenario: Modeling a step's doc string
70
+ Given a step model based on the following gherkin:
71
+ """
72
+ * a step
73
+ \"\"\"
74
+ some text
75
+ \"\"\"
76
+ """
77
+ When the step's doc string is requested
78
+ """
79
+ @model.block
80
+ """
81
+ Then the model returns a model for the following doc string:
82
+ """
83
+ some text
84
+ """
@@ -0,0 +1,29 @@
1
+ Feature: Step output
2
+
3
+ A step model's string output is a Gherkin representation of itself.
4
+
5
+
6
+ Scenario: Outputting a step model
7
+
8
+ Note: Outputting a step that has a doc string is accomplished in the same manner
9
+
10
+ Given the following gherkin:
11
+ """
12
+ * a step
13
+ |value1|
14
+ |value2|
15
+ """
16
+ And a step model based on that gherkin
17
+ """
18
+ @model = CukeModeler::Step.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
+ * a step
27
+ | value1 |
28
+ | value2 |
29
+ """
@@ -0,0 +1,50 @@
1
+ Feature: Table modeling
2
+
3
+ Table models represent represent the table argument to a step. They expose several attributes of the table
4
+ that they represent.
5
+
6
+
7
+ Background:
8
+ Given the following gherkin:
9
+ """
10
+ | value 1 | value 2 |
11
+ | value 3 | value 4 |
12
+ """
13
+ And a table model based on that gherkin
14
+ """
15
+ @model = CukeModeler::Table.new(<source_text>)
16
+ """
17
+
18
+
19
+ Scenario: Modeling a table's rows
20
+ When the table's rows are requested
21
+ """
22
+ @model.rows
23
+ """
24
+ Then the model returns models for the following rows:
25
+ | value 1 | value 2 |
26
+ | value 3 | value 4 |
27
+
28
+ Scenario: Modeling a table's source line
29
+ Given the following gherkin:
30
+ """
31
+ Feature:
32
+
33
+ Scenario:
34
+ * a step
35
+ | value 1 |
36
+ | value 2 |
37
+ """
38
+ And a feature model based on that gherkin
39
+ """
40
+ @model = CukeModeler::Feature.new(<source_text>)
41
+ """
42
+ And the table model inside of that feature model
43
+ """
44
+ @model = @model.tests.first.steps.first.block
45
+ """
46
+ When the table's source line is requested
47
+ """
48
+ @model.source_line
49
+ """
50
+ Then the model returns "5"