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,122 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe 'Gherkin2Adapter, Integration', :gherkin2 => true do
5
+
6
+ let(:source_text) { '@tag1 @tag2 @tag3
7
+ Feature: A feature with everything it could have
8
+
9
+ Including a description
10
+ and then some.
11
+
12
+ Background:
13
+
14
+ Background
15
+ description
16
+
17
+ * a step
18
+ | value1 |
19
+ * another step
20
+
21
+ @scenario_tag
22
+ Scenario:
23
+
24
+ Scenario
25
+ description
26
+
27
+ * a step
28
+ * another step
29
+ """"
30
+ some text
31
+ """
32
+
33
+ @outline_tag
34
+ Scenario Outline:
35
+
36
+ Outline
37
+ description
38
+
39
+ * a step
40
+ | value2 |
41
+ * another step
42
+ """
43
+ some text
44
+ """
45
+
46
+ @example_tag
47
+ Examples:
48
+
49
+ Example
50
+ description
51
+
52
+ | param |
53
+ | value |' }
54
+ let(:feature) { CukeModeler::Feature.new(source_text) }
55
+
56
+
57
+ it "does not store parsing data for a feature's children" do
58
+ model = feature
59
+
60
+ expect(model.parsing_data['tags']).to be_nil
61
+ expect(model.parsing_data['elements']).to be_nil
62
+ end
63
+
64
+ it "does not store parsing data for a background's children" do
65
+ model = feature.background
66
+
67
+ expect(model.parsing_data['steps']).to be_nil
68
+ end
69
+
70
+ it "does not store parsing data for a scenario's children" do
71
+ model = feature.scenarios.first
72
+
73
+ expect(model.parsing_data['tags']).to be_nil
74
+ expect(model.parsing_data['steps']).to be_nil
75
+ end
76
+
77
+ it "does not store parsing data for an outline's children" do
78
+ model = feature.outlines.first
79
+
80
+ expect(model.parsing_data['tags']).to be_nil
81
+ expect(model.parsing_data['steps']).to be_nil
82
+ expect(model.parsing_data['examples']).to be_nil
83
+ end
84
+
85
+ it "does not store parsing data for an example's children" do
86
+ model = feature.outlines.first.examples.first
87
+
88
+ expect(model.parsing_data['tags']).to be_nil
89
+ expect(model.parsing_data['rows']).to be_nil
90
+ end
91
+
92
+ it "does not store parsing data for an example row's children" do
93
+ model = feature.outlines.first.examples.first.rows.first
94
+
95
+ expect(model.parsing_data['cells']).to be_nil
96
+ end
97
+
98
+ it "does not store parsing data for a step's children, table" do
99
+ model = feature.outlines.first.steps.first
100
+
101
+ expect(model.parsing_data['rows']).to be_nil
102
+ end
103
+
104
+ it "does not store parsing data for a step's children, doc string" do
105
+ model = feature.outlines.first.steps.last
106
+
107
+ expect(model.parsing_data['doc_string']).to be_nil
108
+ end
109
+
110
+ it "does not store parsing data for a table's children" do
111
+ model = feature.outlines.first.steps.first.block
112
+
113
+ expect(model.parsing_data).to be_empty
114
+ end
115
+
116
+ it "does not store parsing data for a table row's children" do
117
+ model = feature.outlines.first.steps.first.block.rows.first
118
+
119
+ expect(model.parsing_data['cells']).to be_nil
120
+ end
121
+
122
+ end
@@ -0,0 +1,125 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe 'Gherkin3Adapter, Integration', :gherkin3 => true do
5
+
6
+ let(:source_text) { '@tag1 @tag2 @tag3
7
+ Feature: A feature with everything it could have
8
+
9
+ Including a description
10
+ and then some.
11
+
12
+ Background:
13
+
14
+ Background
15
+ description
16
+
17
+ * a step
18
+ | value1 |
19
+ * another step
20
+
21
+ @scenario_tag
22
+ Scenario:
23
+
24
+ Scenario
25
+ description
26
+
27
+ * a step
28
+ * another step
29
+ """"
30
+ some text
31
+ """
32
+
33
+ @outline_tag
34
+ Scenario Outline:
35
+
36
+ Outline
37
+ description
38
+
39
+ * a step
40
+ | value2 |
41
+ * another step
42
+ """
43
+ some text
44
+ """
45
+
46
+ @example_tag
47
+ Examples:
48
+
49
+ Example
50
+ description
51
+
52
+ | param |
53
+ | value |' }
54
+ let(:feature) { CukeModeler::Feature.new(source_text) }
55
+
56
+
57
+ it "does not store parsing data for a feature's children" do
58
+ model = feature
59
+
60
+ expect(model.parsing_data[:tags]).to be_nil
61
+ expect(model.parsing_data[:scenarioDefinitions]).to be_nil
62
+ expect(model.parsing_data[:background]).to be_nil
63
+ end
64
+
65
+ it "does not store parsing data for a background's children" do
66
+ model = feature.background
67
+
68
+ expect(model.parsing_data[:steps]).to be_nil
69
+ end
70
+
71
+ it "does not store parsing data for a scenario's children" do
72
+ model = feature.scenarios.first
73
+
74
+ expect(model.parsing_data[:tags]).to be_nil
75
+ expect(model.parsing_data[:steps]).to be_nil
76
+ end
77
+
78
+ it "does not store parsing data for an outline's children" do
79
+ model = feature.outlines.first
80
+
81
+ expect(model.parsing_data[:tags]).to be_nil
82
+ expect(model.parsing_data[:steps]).to be_nil
83
+ expect(model.parsing_data[:examples]).to be_nil
84
+ end
85
+
86
+ it "does not store parsing data for an example's children" do
87
+ model = feature.outlines.first.examples.first
88
+
89
+ expect(model.parsing_data[:tags]).to be_nil
90
+ expect(model.parsing_data[:tableHeader]).to be_nil
91
+ expect(model.parsing_data[:tableBody]).to be_nil
92
+ end
93
+
94
+ it "does not store parsing data for an example row's children" do
95
+ model = feature.outlines.first.examples.first.rows.first
96
+
97
+ expect(model.parsing_data[:cells]).to be_nil
98
+ end
99
+
100
+ it "does not store parsing data for a step's children, table" do
101
+ model = feature.outlines.first.steps.first
102
+
103
+ expect(model.parsing_data[:argument]).to be_nil
104
+ end
105
+
106
+ it "does not store parsing data for a step's children, doc string" do
107
+ model = feature.outlines.first.steps.last
108
+
109
+ expect(model.parsing_data[:argument]).to be_nil
110
+ end
111
+
112
+ it "does not store parsing data for a table's children" do
113
+ model = feature.outlines.first.steps.first.block
114
+
115
+ expect(model.parsing_data[:rows]).to be_nil
116
+ end
117
+
118
+ it "does not store parsing data for a table row's children" do
119
+ model = feature.outlines.first.steps.first.block.rows.first
120
+
121
+ expect(model.parsing_data[:cells]).to be_nil
122
+ end
123
+
124
+
125
+ end
@@ -0,0 +1,123 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe 'Gherkin4Adapter, Integration', :gherkin4 => true do
5
+
6
+ let(:source_text) { '@tag1 @tag2 @tag3
7
+ Feature: A feature with everything it could have
8
+
9
+ Including a description
10
+ and then some.
11
+
12
+ Background:
13
+
14
+ Background
15
+ description
16
+
17
+ * a step
18
+ | value1 |
19
+ * another step
20
+
21
+ @scenario_tag
22
+ Scenario:
23
+
24
+ Scenario
25
+ description
26
+
27
+ * a step
28
+ * another step
29
+ """"
30
+ some text
31
+ """
32
+
33
+ @outline_tag
34
+ Scenario Outline:
35
+
36
+ Outline
37
+ description
38
+
39
+ * a step
40
+ | value2 |
41
+ * another step
42
+ """
43
+ some text
44
+ """
45
+
46
+ @example_tag
47
+ Examples:
48
+
49
+ Example
50
+ description
51
+
52
+ | param |
53
+ | value |' }
54
+ let(:feature) { CukeModeler::Feature.new(source_text) }
55
+
56
+
57
+ it "does not store parsing data for a feature's children" do
58
+ model = feature
59
+
60
+ expect(model.parsing_data[:tags]).to be_nil
61
+ expect(model.parsing_data[:children]).to be_nil
62
+ end
63
+
64
+ it "does not store parsing data for a background's children" do
65
+ model = feature.background
66
+
67
+ expect(model.parsing_data[:steps]).to be_nil
68
+ end
69
+
70
+ it "does not store parsing data for a scenario's children" do
71
+ model = feature.scenarios.first
72
+
73
+ expect(model.parsing_data[:tags]).to be_nil
74
+ expect(model.parsing_data[:steps]).to be_nil
75
+ end
76
+
77
+ it "does not store parsing data for an outline's children" do
78
+ model = feature.outlines.first
79
+
80
+ expect(model.parsing_data[:tags]).to be_nil
81
+ expect(model.parsing_data[:steps]).to be_nil
82
+ expect(model.parsing_data[:examples]).to be_nil
83
+ end
84
+
85
+ it "does not store parsing data for an example's children" do
86
+ model = feature.outlines.first.examples.first
87
+
88
+ expect(model.parsing_data[:tags]).to be_nil
89
+ expect(model.parsing_data[:tableHeader]).to be_nil
90
+ expect(model.parsing_data[:tableBody]).to be_nil
91
+ end
92
+
93
+ it "does not store parsing data for an example row's children" do
94
+ model = feature.outlines.first.examples.first.rows.first
95
+
96
+ expect(model.parsing_data[:cells]).to be_nil
97
+ end
98
+
99
+ it "does not store parsing data for a step's children, table" do
100
+ model = feature.outlines.first.steps.first
101
+
102
+ expect(model.parsing_data[:argument]).to be_nil
103
+ end
104
+
105
+ it "does not store parsing data for a step's children, doc string" do
106
+ model = feature.outlines.first.steps.last
107
+
108
+ expect(model.parsing_data[:argument]).to be_nil
109
+ end
110
+
111
+ it "does not store parsing data for a table's children" do
112
+ model = feature.outlines.first.steps.first.block
113
+
114
+ expect(model.parsing_data[:rows]).to be_nil
115
+ end
116
+
117
+ it "does not store parsing data for a table row's children" do
118
+ model = feature.outlines.first.steps.first.block.rows.first
119
+
120
+ expect(model.parsing_data[:cells]).to be_nil
121
+ end
122
+
123
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe 'Model, Integration' do
5
+
6
+ let(:clazz) { CukeModeler::Model }
7
+
8
+
9
+ describe 'common behavior' do
10
+
11
+ it_should_behave_like 'a model, integration'
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe 'Nested, Integration' do
5
+
6
+ let(:nodule) { CukeModeler::Nested }
7
+ let(:nested_model) { Object.new.extend(nodule) }
8
+
9
+
10
+ describe 'unique behavior' do
11
+
12
+ describe 'an object including the module' do
13
+
14
+ describe 'getting ancestors' do
15
+
16
+ context 'with a background ancestor' do
17
+
18
+ let(:background) { CukeModeler::Background.new }
19
+
20
+ before(:each) do
21
+ nested_model.parent_model = background
22
+ end
23
+
24
+
25
+ it "will find its background as a 'test' ancestor" do
26
+ ancestor = nested_model.get_ancestor(:test)
27
+
28
+ expect(ancestor).to equal(background)
29
+ end
30
+
31
+ it "will find its background as a 'background' ancestor" do
32
+ ancestor = nested_model.get_ancestor(:background)
33
+
34
+ expect(ancestor).to equal(background)
35
+ end
36
+
37
+ end
38
+
39
+ context 'with a scenario ancestor' do
40
+
41
+ let(:scenario) { CukeModeler::Scenario.new }
42
+
43
+ before(:each) do
44
+ nested_model.parent_model = scenario
45
+ end
46
+
47
+
48
+ it "will find its scenario as a 'test' ancestor" do
49
+ ancestor = nested_model.get_ancestor(:test)
50
+
51
+ expect(ancestor).to equal(scenario)
52
+ end
53
+
54
+ it "will find its scenario as a 'scenario' ancestor" do
55
+ ancestor = nested_model.get_ancestor(:scenario)
56
+
57
+ expect(ancestor).to equal(scenario)
58
+ end
59
+
60
+ end
61
+
62
+ context 'with an outline ancestor' do
63
+
64
+ let(:outline) { CukeModeler::Outline.new }
65
+
66
+ before(:each) do
67
+ nested_model.parent_model = outline
68
+ end
69
+
70
+
71
+ it "will find its outline as a 'test' ancestor" do
72
+ ancestor = nested_model.get_ancestor(:test)
73
+
74
+ expect(ancestor).to equal(outline)
75
+ end
76
+
77
+ it "will find its outline as a 'outline' ancestor" do
78
+ ancestor = nested_model.get_ancestor(:outline)
79
+
80
+ expect(ancestor).to equal(outline)
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+
87
+ end
88
+
89
+ end
90
+
91
+ end