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,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"