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
@@ -1,28 +0,0 @@
1
- require 'spec_helper'
2
-
3
- SimpleCov.command_name('Raw') unless RUBY_VERSION.to_s < '1.9.0'
4
-
5
- describe 'Raw, Unit' do
6
-
7
- let(:nodule) { CukeModeler::Raw }
8
- let(:element) { Object.new.extend(nodule) }
9
-
10
-
11
- describe 'unique behavior' do
12
-
13
- it 'has a raw element' do
14
- element.should respond_to(:raw_element)
15
- end
16
-
17
- it 'can change its raw element' do
18
- expect(element).to respond_to(:raw_element=)
19
-
20
- element.raw_element = :some_raw_element
21
- element.raw_element.should == :some_raw_element
22
- element.raw_element = :some_other_raw_element
23
- element.raw_element.should == :some_other_raw_element
24
- end
25
-
26
- end
27
-
28
- end
@@ -1,18 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for 'a sourced element' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:element) { clazz.new }
8
-
9
-
10
- it 'has a source line' do
11
- element.should respond_to(:source_line)
12
- end
13
-
14
- it 'starts with no source line' do
15
- element.source_line.should == nil
16
- end
17
-
18
- end
@@ -1,102 +0,0 @@
1
- require 'spec_helper'
2
-
3
- SimpleCov.command_name('TableRow') unless RUBY_VERSION.to_s < '1.9.0'
4
-
5
- describe 'TableRow, Unit' do
6
-
7
- let(:clazz) { CukeModeler::TableRow }
8
- let(:row) { clazz.new }
9
-
10
-
11
- describe 'common behavior' do
12
-
13
- it_should_behave_like 'a nested element'
14
- it_should_behave_like 'a bare bones element'
15
- it_should_behave_like 'a prepopulated element'
16
- it_should_behave_like 'a sourced element'
17
- it_should_behave_like 'a raw element'
18
-
19
- end
20
-
21
-
22
- describe 'unique behavior' do
23
-
24
- it 'can be parsed from stand alone text' do
25
- source = '| a | row |'
26
-
27
- expect { @element = clazz.new(source) }.to_not raise_error
28
-
29
- # Sanity check in case instantiation failed in a non-explosive manner
30
- @element.cells.should == ['a', 'row']
31
- end
32
-
33
- it 'provides a descriptive filename when being parsed from stand alone text' do
34
- source = 'bad table row text'
35
-
36
- expect { clazz.new(source) }.to raise_error(/'cuke_modeler_stand_alone_table_row\.feature'/)
37
- end
38
-
39
- it 'stores the original data generated by the parsing adapter', :gherkin4 => true do
40
- table_row = clazz.new("| a | row |")
41
- raw_data = table_row.raw_element
42
-
43
- expect(raw_data.keys).to match_array([:type, :location, :cells])
44
- expect(raw_data[:type]).to eq(:TableRow)
45
- end
46
-
47
- it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
48
- table_row = clazz.new("| a | row |")
49
- raw_data = table_row.raw_element
50
-
51
- expect(raw_data.keys).to match_array([:type, :location, :cells])
52
- expect(raw_data[:type]).to eq('TableRow')
53
- end
54
-
55
- it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
56
- table_row = clazz.new("| a | row |")
57
- raw_data = table_row.raw_element
58
-
59
- expect(raw_data.keys).to match_array(['cells', 'line'])
60
- expect(raw_data['cells']).to eq(['a', 'row'])
61
- end
62
-
63
- it 'has cells' do
64
- row.should respond_to(:cells)
65
- end
66
-
67
- it 'can get and set its cells' do
68
- expect(row).to respond_to(:cells=)
69
-
70
- row.cells = :some_cells
71
- row.cells.should == :some_cells
72
- row.cells = :some_other_cells
73
- row.cells.should == :some_other_cells
74
- end
75
-
76
- it 'starts with no cells' do
77
- row.cells.should == []
78
- end
79
-
80
- describe 'table row output edge cases' do
81
-
82
- it 'is a String' do
83
- row.to_s.should be_a(String)
84
- end
85
-
86
-
87
- context 'a new row object' do
88
-
89
- let(:row) { clazz.new }
90
-
91
-
92
- it 'can output an empty table row' do
93
- expect { row.to_s }.to_not raise_error
94
- end
95
-
96
- end
97
-
98
- end
99
-
100
- end
101
-
102
- end
@@ -1,67 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for 'a tagged element' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:element) { clazz.new }
8
-
9
-
10
- it 'has tags' do
11
- element.should respond_to(:tags)
12
- element.should respond_to(:tag_elements)
13
- end
14
-
15
- it 'can get and set its tags' do
16
- expect(element).to respond_to(:tags=)
17
- expect(element).to respond_to(:tag_elements=)
18
-
19
- element.tags = :some_tags
20
- element.tags.should == :some_tags
21
- element.tags = :some_other_tags
22
- element.tags.should == :some_other_tags
23
-
24
- element.tag_elements = :some_tag_elements
25
- element.tag_elements.should == :some_tag_elements
26
- element.tag_elements = :some_other_tag_elements
27
- element.tag_elements.should == :some_other_tag_elements
28
- end
29
-
30
- it 'starts with no tags' do
31
- element.tags.should == []
32
- element.tag_elements.should == []
33
- end
34
-
35
- it 'has applied tags' do
36
- element.should respond_to(:applied_tags)
37
- element.should respond_to(:applied_tag_elements)
38
- end
39
-
40
- it 'inherits its applied tags from its ancestors' do
41
- all_parent_tag_elements = [:parent_tag_element_1, :parent_tag_element_2, :grandparent_tag_element_1]
42
- all_parent_tags = ['@parent_tag_1', '@parent_tag_2', '@grandparent_tag_1']
43
- parent = double(:all_tags => all_parent_tags, :all_tag_elements => all_parent_tag_elements)
44
-
45
- element.parent_element = parent
46
-
47
- element.applied_tags.should == all_parent_tags
48
- element.applied_tag_elements.should == all_parent_tag_elements
49
- end
50
-
51
- it 'knows all of its applicable tags' do
52
- all_parent_tag_elements = [:parent_tag_element_1, :parent_tag_element_2, :grandparent_tag_element_1]
53
- all_parent_tags = ['@parent_tag_1', '@parent_tag_2', '@grandparent_tag_1']
54
- own_tags = ['@tag_1', '@tag_2']
55
- own_tag_elements = [:tag_element_1, :tag_element_2]
56
-
57
- parent = double(:all_tags => all_parent_tags, :all_tag_elements => all_parent_tag_elements)
58
-
59
- element.parent_element = parent
60
- element.tags = own_tags
61
- element.tag_elements = own_tag_elements
62
-
63
- element.all_tags.should == all_parent_tags + own_tags
64
- element.all_tag_elements.should == all_parent_tag_elements + own_tag_elements
65
- end
66
-
67
- end
@@ -1,54 +0,0 @@
1
- require 'spec_helper'
2
-
3
- SimpleCov.command_name('TestElement') unless RUBY_VERSION.to_s < '1.9.0'
4
-
5
- describe 'TestElement, Unit' do
6
-
7
- let(:clazz) { CukeModeler::TestElement }
8
- let(:element) { clazz.new }
9
-
10
-
11
- describe 'common behavior' do
12
-
13
- it_should_behave_like 'a test element'
14
- it_should_behave_like 'a feature element'
15
- it_should_behave_like 'a nested element'
16
- it_should_behave_like 'a prepopulated element'
17
- it_should_behave_like 'a bare bones element'
18
-
19
- end
20
-
21
-
22
- describe 'unique behavior' do
23
-
24
- it 'contains only steps' do
25
- steps = [:step_1, :step_2, :step_3]
26
- element.steps = steps
27
-
28
- element.contains.should =~ steps
29
- end
30
-
31
- it 'can determine its equality with another TestElement' do
32
- element_1 = clazz.new
33
- element_2 = clazz.new
34
- element_3 = clazz.new
35
-
36
- element_1.steps = :some_steps
37
- element_2.steps = :some_steps
38
- element_3.steps = :some_other_steps
39
-
40
- (element_1 == element_2).should be_true
41
- (element_1 == element_3).should be_false
42
- end
43
-
44
- it 'can gracefully be compared to other types of objects' do
45
- # Some common types of object
46
- [1, 'foo', :bar, [], {}].each do |thing|
47
- expect { element == thing }.to_not raise_error
48
- expect(element == thing).to be false
49
- end
50
- end
51
-
52
- end
53
-
54
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for 'a test element' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:element) { clazz.new }
8
-
9
-
10
- it 'has steps' do
11
- element.should respond_to(:steps)
12
- end
13
-
14
- it 'can change its steps' do
15
- expect(element).to respond_to(:steps=)
16
-
17
- element.steps = :some_steps
18
- element.steps.should == :some_steps
19
- element.steps = :some_other_steps
20
- element.steps.should == :some_other_steps
21
- end
22
-
23
- it 'starts with no steps' do
24
- element.steps.should == []
25
- end
26
-
27
- it 'contains steps' do
28
- steps = [:step_1, :step_2, :step_3]
29
- element.steps = steps
30
-
31
- steps.each { |step| element.contains.should include(step) }
32
- end
33
-
34
- end
@@ -1,140 +0,0 @@
1
- require 'spec_helper'
2
-
3
- SimpleCov.command_name('World') unless RUBY_VERSION.to_s < '1.9.0'
4
-
5
- describe 'World, Unit' do
6
-
7
- let(:nodule) { CukeModeler::World }
8
- let(:world) { nodule }
9
-
10
-
11
- describe 'unique behavior' do
12
-
13
- before(:each) do
14
- world.loaded_step_patterns.clear
15
- world.delimiter = nil
16
- end
17
-
18
- it 'has left and right delimiters used for step argument parsing' do
19
- world.should respond_to(:left_delimiter)
20
- world.should respond_to(:right_delimiter)
21
- end
22
-
23
- it 'can get and set the delimiters used for step argument parsing' do
24
- expect(world).to respond_to(:left_delimiter=)
25
- expect(world).to respond_to(:right_delimiter=)
26
-
27
- world.left_delimiter = '"'
28
- world.right_delimiter = '"'
29
- world.left_delimiter.should == '"'
30
- world.right_delimiter.should == '"'
31
-
32
- world.left_delimiter = '!'
33
- world.right_delimiter = '!'
34
- world.left_delimiter.should == '!'
35
- world.right_delimiter.should == '!'
36
- end
37
-
38
- it 'can have different left and right delimiters' do
39
- world.left_delimiter = '"'
40
- world.right_delimiter = '*'
41
-
42
- (world.left_delimiter != world.right_delimiter).should be_true
43
- end
44
-
45
- it 'can set both of its delimiters at once' do
46
- world.delimiter = '*'
47
-
48
- world.left_delimiter.should == '*'
49
- world.right_delimiter.should == '*'
50
- end
51
-
52
- it 'starts with no delimiters' do
53
- world.left_delimiter.should == nil
54
- world.right_delimiter.should == nil
55
- end
56
-
57
- describe 'step patterns' do
58
-
59
- it 'can load step patterns' do
60
- world.should respond_to(:load_step_pattern)
61
- end
62
-
63
- it 'starts with no patterns loaded' do
64
- world.loaded_step_patterns.should == []
65
- end
66
-
67
- it 'keeps track of loaded step patterns' do
68
- patterns = [/a pattern/, /another pattern/]
69
-
70
- patterns.each do |pattern|
71
- world.load_step_pattern(pattern)
72
- end
73
-
74
- world.loaded_step_patterns.should =~ patterns
75
- end
76
-
77
- it 'can load step definition files' do
78
- file_path = "#{@default_file_directory}/step_file.rb"
79
- patterns = [/a pattern/, /another pattern/]
80
-
81
- File.open(file_path, 'w') { |file|
82
- patterns.each do |pattern|
83
- file.puts "Given #{pattern.inspect} do end"
84
- end
85
- }
86
-
87
- world.load_step_file(file_path)
88
-
89
- world.loaded_step_patterns.should =~ patterns
90
- end
91
-
92
- it 'can handle different step keywords' do
93
- file_path = "#{@default_file_directory}/step_file.rb"
94
- patterns = [/given pattern/, /when pattern/, /then pattern/, /and pattern/, /but pattern/]
95
-
96
- File.open(file_path, 'w') { |file|
97
- file.puts "Given #{patterns[0].inspect} do end"
98
- file.puts "When #{patterns[1].inspect} do end"
99
- file.puts "Then #{patterns[2].inspect} do end"
100
- file.puts "And #{patterns[3].inspect} do end"
101
- file.puts "But #{patterns[4].inspect} do end"
102
- }
103
-
104
- world.load_step_file(file_path)
105
-
106
- world.loaded_step_patterns.should =~ patterns
107
- end
108
-
109
- it 'can handle a variety of declaration structures' do
110
- file_path = "#{@default_file_directory}/step_file.rb"
111
- patterns = [/parentheses pattern/, /no parentheses pattern/, /excess whitespace pattern/]
112
-
113
- File.open(file_path, 'w') { |file|
114
- file.puts "Given(#{patterns[0].inspect}) do end"
115
- file.puts "Given #{patterns[1].inspect} do end"
116
- file.puts "Given #{patterns[2].inspect} do end"
117
- }
118
-
119
- world.load_step_file(file_path)
120
-
121
- world.loaded_step_patterns.should =~ patterns
122
- end
123
-
124
- it 'can clear its loaded step patterns' do
125
- patterns = [/a pattern/, /another pattern/]
126
-
127
- patterns.each do |pattern|
128
- world.load_step_pattern(pattern)
129
- end
130
-
131
- world.loaded_step_patterns.should =~ patterns
132
- world.clear_step_patterns
133
- world.loaded_step_patterns.should == []
134
- end
135
-
136
- end
137
-
138
- end
139
-
140
- end