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
data/spec/spec_helper.rb CHANGED
@@ -1,31 +1,41 @@
1
- require 'simplecov' unless RUBY_VERSION.to_s < '1.9.0'
1
+ unless RUBY_VERSION.to_s < '1.9.0'
2
+ require 'simplecov'
3
+ SimpleCov.command_name('rspec_tests')
4
+ end
2
5
 
3
6
 
4
7
  this_dir = File.dirname(__FILE__)
5
8
 
6
9
  require "#{this_dir}/../lib/cuke_modeler"
7
10
 
8
- require "#{this_dir}/unit/feature_element_unit_specs"
9
- require "#{this_dir}/unit/nested_element_unit_specs"
10
- require "#{this_dir}/unit/tagged_element_unit_specs"
11
- require "#{this_dir}/unit/containing_element_unit_specs"
12
- require "#{this_dir}/unit/bare_bones_unit_specs"
13
- require "#{this_dir}/unit/test_element_unit_specs"
14
- require "#{this_dir}/unit/prepopulated_unit_specs"
15
- require "#{this_dir}/unit/sourced_element_unit_specs"
16
- require "#{this_dir}/unit/raw_element_unit_specs"
11
+ require "#{this_dir}/unit/shared/models_unit_specs"
12
+ require "#{this_dir}/integration/shared/models_integration_specs"
13
+ require "#{this_dir}/unit/shared/named_models_unit_specs"
14
+ require "#{this_dir}/unit/shared/described_models_unit_specs"
15
+ require "#{this_dir}/unit/shared/stepped_models_unit_specs"
16
+ require "#{this_dir}/unit/shared/stringifiable_models_unit_specs"
17
+ require "#{this_dir}/unit/shared/nested_models_unit_specs"
18
+ require "#{this_dir}/unit/shared/tagged_models_unit_specs"
19
+ require "#{this_dir}/unit/shared/containing_models_unit_specs"
20
+ require "#{this_dir}/unit/shared/bare_bones_models_unit_specs"
21
+ require "#{this_dir}/unit/shared/prepopulated_models_unit_specs"
22
+ require "#{this_dir}/unit/shared/sourced_models_unit_specs"
23
+ require "#{this_dir}/unit/shared/parsed_models_unit_specs"
17
24
 
18
25
 
19
26
  RSpec.configure do |config|
20
27
  case
21
28
  when Gem.loaded_specs['gherkin'].version.version[/^4/]
22
29
  config.filter_run_excluding :gherkin2 => true,
23
- :gherkin3 => true
30
+ :gherkin3 => true,
31
+ :gherkin4 => false
24
32
  when Gem.loaded_specs['gherkin'].version.version[/^3/]
25
33
  config.filter_run_excluding :gherkin2 => true,
34
+ :gherkin3 => false,
26
35
  :gherkin4 => true
27
36
  else
28
- config.filter_run_excluding :gherkin3 => true,
37
+ config.filter_run_excluding :gherkin2 => false,
38
+ :gherkin3 => true,
29
39
  :gherkin4 => true
30
40
  end
31
41
 
@@ -34,14 +44,18 @@ RSpec.configure do |config|
34
44
  @default_feature_file_name = 'test_feature.feature'
35
45
  end
36
46
 
37
- config.before(:each) do
38
- FileUtils.remove_dir(@default_file_directory, true) if File.exists?(@default_file_directory)
47
+ config.before(:each) do |spec|
48
+ unless spec.metadata[:unit_test]
49
+ FileUtils.remove_dir(@default_file_directory, true) if File.exists?(@default_file_directory)
39
50
 
40
- FileUtils.mkdir(@default_file_directory)
51
+ FileUtils.mkdir(@default_file_directory)
52
+ end
41
53
  end
42
54
 
43
- config.after(:each) do
44
- FileUtils.remove_dir(@default_file_directory, true)
55
+ config.after(:each) do |spec|
56
+ unless spec.metadata[:unit_test]
57
+ FileUtils.remove_dir(@default_file_directory, true)
58
+ end
45
59
  end
46
- end
47
60
 
61
+ end
@@ -1,8 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- SimpleCov.command_name('Background') unless RUBY_VERSION.to_s < '1.9.0'
4
3
 
5
- describe 'Background, Unit' do
4
+ describe 'Background, Unit', :unit_test => true do
6
5
 
7
6
  let(:clazz) { CukeModeler::Background }
8
7
  let(:background) { clazz.new }
@@ -10,68 +9,49 @@ describe 'Background, Unit' do
10
9
 
11
10
  describe 'common behavior' do
12
11
 
13
- it_should_behave_like 'a feature element'
14
- it_should_behave_like 'a nested element'
15
- it_should_behave_like 'a containing element'
16
- it_should_behave_like 'a bare bones element'
17
- it_should_behave_like 'a prepopulated element'
18
- it_should_behave_like 'a test element'
19
- it_should_behave_like 'a sourced element'
20
- it_should_behave_like 'a raw element'
12
+ it_should_behave_like 'a model'
13
+ it_should_behave_like 'a named model'
14
+ it_should_behave_like 'a described model'
15
+ it_should_behave_like 'a stepped model'
16
+ it_should_behave_like 'a sourced model'
17
+ it_should_behave_like 'a parsed model'
21
18
 
22
19
  end
23
20
 
24
21
 
25
22
  describe 'unique behavior' do
26
23
 
27
- it 'can be parsed from stand alone text' do
28
- source = 'Background: test background'
24
+ it 'contains steps' do
25
+ steps = [:step_1, :step_2]
26
+ everything = steps
29
27
 
30
- expect { @element = clazz.new(source) }.to_not raise_error
28
+ background.steps = steps
31
29
 
32
- # Sanity check in case instantiation failed in a non-explosive manner
33
- @element.name.should == 'test background'
30
+ expect(background.children).to match_array(everything)
34
31
  end
35
32
 
36
- it 'provides a descriptive filename when being parsed from stand alone text' do
37
- source = "bad background text \n Background:\n And a step\n @foo "
38
33
 
39
- expect { clazz.new(source) }.to raise_error(/'cuke_modeler_stand_alone_background\.feature'/)
40
- end
41
-
42
- it 'stores the original data generated by the parsing adapter', :gherkin4 => true do
43
- background = clazz.new('Background: test background')
44
- raw_data = background.raw_element
45
-
46
- expect(raw_data.keys).to match_array([:type, :location, :keyword, :name, :steps])
47
- expect(raw_data[:type]).to eq(:Background)
48
- end
49
-
50
- it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
51
- background = clazz.new('Background: test background')
52
- raw_data = background.raw_element
34
+ describe 'comparison' do
53
35
 
54
- expect(raw_data.keys).to match_array([:type, :location, :keyword, :name, :steps])
55
- expect(raw_data[:type]).to eq(:Background)
56
- end
57
-
58
- it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
59
- background = clazz.new('Background: test background')
60
- raw_data = background.raw_element
36
+ it 'can gracefully be compared to other types of objects' do
37
+ # Some common types of object
38
+ [1, 'foo', :bar, [], {}].each do |thing|
39
+ expect { background == thing }.to_not raise_error
40
+ expect(background == thing).to be false
41
+ end
42
+ end
61
43
 
62
- expect(raw_data.keys).to match_array(['keyword', 'name', 'line', 'description', 'type'])
63
- expect(raw_data['keyword']).to eq('Background')
64
44
  end
65
45
 
66
46
 
67
- describe 'background output edge cases' do
47
+ describe 'background output' do
68
48
 
69
49
  it 'is a String' do
70
- background.to_s.should be_a(String)
50
+ expect(background.to_s).to be_a(String)
71
51
  end
72
52
 
73
53
 
74
- context 'a new background object' do
54
+ context 'from abstract instantiation' do
75
55
 
76
56
  let(:background) { clazz.new }
77
57
 
@@ -87,7 +67,7 @@ describe 'Background, Unit' do
87
67
  end
88
68
 
89
69
  it 'can output a background that has only a description' do
90
- background.description_text = 'a description'
70
+ background.description = 'a description'
91
71
 
92
72
  expect { background.to_s }.to_not raise_error
93
73
  end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe 'Cell, Unit', :unit_test => true do
5
+
6
+ let(:clazz) { CukeModeler::Cell }
7
+ let(:cell) { clazz.new }
8
+
9
+
10
+ describe 'common behavior' do
11
+
12
+ it_should_behave_like 'a model'
13
+ it_should_behave_like 'a sourced model'
14
+ it_should_behave_like 'a parsed model'
15
+
16
+ end
17
+
18
+
19
+ describe 'unique behavior' do
20
+
21
+ it 'has a value' do
22
+ expect(cell).to respond_to(:value)
23
+ end
24
+
25
+ it 'can change its value' do
26
+ expect(cell).to respond_to(:value=)
27
+
28
+ cell.value = :some_value
29
+ expect(cell.value).to eq(:some_value)
30
+ cell.value = :some_other_value
31
+ expect(cell.value).to eq(:some_other_value)
32
+ end
33
+
34
+
35
+ describe 'abstract instantiation' do
36
+
37
+ context 'a new cell object' do
38
+
39
+ let(:cell) { clazz.new }
40
+
41
+
42
+ it 'starts with no value' do
43
+ expect(cell.value).to be_nil
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+
50
+
51
+ describe 'cell output' do
52
+
53
+ it 'is a String' do
54
+ expect(cell.to_s).to be_a(String)
55
+ end
56
+
57
+
58
+ context 'from abstract instantiation' do
59
+
60
+ let(:cell) { clazz.new }
61
+
62
+
63
+ it 'can output an empty cell' do
64
+ expect { cell.to_s }.to_not raise_error
65
+ end
66
+
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+
73
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe 'Described, Unit', :unit_test => true do
5
+
6
+ let(:nodule) { CukeModeler::Described }
7
+ let(:described_model) { Object.new.extend(nodule) }
8
+
9
+
10
+ it 'has a description' do
11
+ expect(described_model).to respond_to(:description)
12
+ end
13
+
14
+ it 'can change its description' do
15
+ expect(described_model).to respond_to(:description=)
16
+
17
+ described_model.description = :some_description
18
+ expect(described_model.description).to eq(:some_description)
19
+ described_model.description = :some_other_description
20
+ expect(described_model.description).to eq(:some_other_description)
21
+ end
22
+
23
+ end
@@ -1,8 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- SimpleCov.command_name('Directory') unless RUBY_VERSION.to_s < '1.9.0'
4
3
 
5
- describe 'Directory, Unit' do
4
+ describe 'Directory, Unit', :unit_test => true do
6
5
 
7
6
  let(:clazz) { CukeModeler::Directory }
8
7
  let(:directory) { clazz.new }
@@ -10,10 +9,7 @@ describe 'Directory, Unit' do
10
9
 
11
10
  describe 'common behavior' do
12
11
 
13
- it_should_behave_like 'a nested element'
14
- it_should_behave_like 'a containing element'
15
- it_should_behave_like 'a bare bones element'
16
- it_should_behave_like 'a prepopulated element'
12
+ it_should_behave_like 'a model'
17
13
 
18
14
  end
19
15
 
@@ -30,78 +26,71 @@ describe 'Directory, Unit' do
30
26
  expect(directory.name).to eq('foo')
31
27
  end
32
28
 
33
- it 'has a path' do
34
- expect(directory).to respond_to(:path)
35
- end
36
29
 
37
- it 'can change its path' do
38
- expect(directory).to respond_to(:path=)
30
+ describe 'attributes' do
39
31
 
40
- directory.path = :some_path
41
- directory.path.should == :some_path
42
- directory.path = :some_other_path
43
- directory.path.should == :some_other_path
44
- end
32
+ it 'has a path' do
33
+ expect(directory).to respond_to(:path)
34
+ end
45
35
 
46
- it 'knows the path of the directory that it is modeling' do
47
- path = "#{@default_file_directory}"
36
+ it 'can change its path' do
37
+ expect(directory).to respond_to(:path=)
48
38
 
49
- directory = clazz.new(path)
39
+ directory.path = :some_path
40
+ expect(directory.path).to eq(:some_path)
41
+ directory.path = :some_other_path
42
+ expect(directory.path).to eq(:some_other_path)
43
+ end
50
44
 
51
- directory.path.should == path
52
- end
45
+ it 'has feature files' do
46
+ expect(directory).to respond_to(:feature_files)
47
+ end
53
48
 
54
- it 'has feature files' do
55
- directory.should respond_to(:feature_files)
56
- end
49
+ it 'can change its feature files' do
50
+ expect(directory).to respond_to(:feature_files=)
57
51
 
58
- it 'can change its feature files' do
59
- expect(directory).to respond_to(:feature_files=)
52
+ directory.feature_files = :some_feature_files
53
+ expect(directory.feature_files).to eq(:some_feature_files)
54
+ directory.feature_files = :some_other_feature_files
55
+ expect(directory.feature_files).to eq(:some_other_feature_files)
56
+ end
60
57
 
61
- directory.feature_files = :some_feature_files
62
- directory.feature_files.should == :some_feature_files
63
- directory.feature_files = :some_other_feature_files
64
- directory.feature_files.should == :some_other_feature_files
65
- end
58
+ it 'has directories' do
59
+ expect(directory).to respond_to(:directories)
60
+ end
66
61
 
67
- it 'knows how many feature files it has' do
68
- directory.feature_files = [:file_1, :file_2, :file_3]
62
+ it 'can change its directories' do
63
+ expect(directory).to respond_to(:directories=)
69
64
 
70
- directory.feature_file_count.should == 3
71
- end
65
+ directory.directories = :some_directories
66
+ expect(directory.directories).to eq(:some_directories)
67
+ directory.directories = :some_other_directories
68
+ expect(directory.directories).to eq(:some_other_directories)
69
+ end
72
70
 
73
- it 'has directories' do
74
- directory.should respond_to(:directories)
75
71
  end
76
72
 
77
- it 'can change its directories' do
78
- expect(directory).to respond_to(:directories=)
79
73
 
80
- directory.directories = :some_directories
81
- directory.directories.should == :some_directories
82
- directory.directories = :some_other_directories
83
- directory.directories.should == :some_other_directories
84
- end
74
+ describe 'abstract instantiation' do
85
75
 
86
- it 'knows how many directories it has' do
87
- directory.directories = [:directory_1, :directory_2, :directory_3]
76
+ context 'a new directory object' do
88
77
 
89
- directory.directory_count.should == 3
90
- end
78
+ let(:directory) { clazz.new }
91
79
 
92
- describe 'abstract instantiation' do
93
80
 
94
- it 'starts with no path' do
95
- expect(directory.path).to be nil
96
- end
81
+ it 'starts with no path' do
82
+ expect(directory.path).to be_nil
83
+ end
97
84
 
98
- it 'starts with no name' do
99
- expect(directory.name).to be nil
100
- end
85
+ it 'starts with no name' do
86
+ expect(directory.name).to be_nil
87
+ end
88
+
89
+ it 'starts with no feature files or directories' do
90
+ expect(directory.feature_files).to eq([])
91
+ expect(directory.directories).to eq([])
92
+ end
101
93
 
102
- it 'starts with no feature files or directories' do
103
- directory.feature_files.should == []
104
- directory.directories.should == []
105
94
  end
106
95
 
107
96
  end
@@ -114,17 +103,18 @@ describe 'Directory, Unit' do
114
103
  directory.directories = directories
115
104
  directory.feature_files = files
116
105
 
117
- directory.contains.should =~ everything
106
+ expect(directory.children).to match_array(everything)
118
107
  end
119
108
 
120
- describe 'directory output edge cases' do
109
+
110
+ describe 'directory output' do
121
111
 
122
112
  it 'is a String' do
123
- directory.to_s.should be_a(String)
113
+ expect(directory.to_s).to be_a(String)
124
114
  end
125
115
 
126
116
 
127
- context 'a new directory object' do
117
+ context 'from abstract instantiation' do
128
118
 
129
119
  let(:directory) { clazz.new }
130
120