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,79 +0,0 @@
1
- module CukeModeler
2
-
3
- # A class modeling an element that contains steps.
4
-
5
- class TestElement < FeatureElement
6
-
7
- include Containing
8
-
9
-
10
- # The steps contained by the TestElement
11
- attr_accessor :steps
12
-
13
-
14
- # Creates a new TestElement object and, if *parsed_test_element* is provided,
15
- # populates the object.
16
- def initialize(parsed_test_element = nil)
17
- super
18
-
19
- @steps = []
20
-
21
- build_test_element(parsed_test_element) if parsed_test_element
22
- end
23
-
24
- # Returns true if the two elements have equivalent steps and false otherwise.
25
- def ==(other_element)
26
- return false unless other_element.respond_to?(:steps)
27
-
28
- steps == other_element.steps
29
- end
30
-
31
- # Returns the immediate child elements of the element.
32
- def contains
33
- @steps
34
- end
35
-
36
-
37
- private
38
-
39
-
40
- def process_source(source, file_name = nil)
41
- case
42
- when source.is_a?(String)
43
- parse_test_element(source, file_name)
44
- else
45
- source
46
- end
47
- end
48
-
49
- def parse_test_element(source_text, file_name = nil)
50
- base_file_string = "Feature: Fake feature to parse\n"
51
- source_text = base_file_string + source_text
52
-
53
- parsed_file = Parsing::parse_text(source_text, file_name)
54
-
55
- parsed_file.first['elements'].first
56
- end
57
-
58
- def build_test_element(parsed_test_element)
59
- populate_test_element_steps(parsed_test_element)
60
- end
61
-
62
- def populate_test_element_steps(parsed_test_element)
63
- if parsed_test_element['steps']
64
- parsed_test_element['steps'].each do |step|
65
- @steps << build_child_element(Step, step)
66
- end
67
- end
68
- end
69
-
70
- def steps_output_string
71
- steps.collect { |step| indented_step_text(step) }.join("\n")
72
- end
73
-
74
- def indented_step_text(step)
75
- step.to_s.split("\n").collect { |line| " #{line}" }.join("\n")
76
- end
77
-
78
- end
79
- end
@@ -1,113 +0,0 @@
1
- module CukeModeler
2
-
3
- # A module providing suite level analysis functionality.
4
-
5
- module World
6
-
7
- # A placeholder string used to mark 'dirty' portions of input strings
8
- SANITARY_STRING = '___SANITIZED_BY_CUCUMBER_ANALYTICS___'
9
-
10
- # A pattern that matches a Cucumber step keyword
11
- STEP_DEF_KEYWORD_PATTERN = '(?:Given|When|Then|And|But)'
12
-
13
- # A pattern that matches a 'clean' regular expression
14
- REGEX_PATTERN_STRING = '\/[^\/]*\/'
15
-
16
- # A pattern that matches a step definition declaration line
17
- STEP_DEF_LINE_PATTERN = /^\s*#{World::STEP_DEF_KEYWORD_PATTERN}\s*\(?\s*#{REGEX_PATTERN_STRING}\s*\)?/
18
-
19
- # A pattern that captures the regular expression portion of a step definition declaration line
20
- STEP_DEF_PATTERN_CAPTURE_PATTERN = /^\s*#{World::STEP_DEF_KEYWORD_PATTERN}\s*\(?\s*(#{REGEX_PATTERN_STRING})\s*\)?/
21
-
22
-
23
- class << self
24
-
25
- # Returns the left delimiter, which is used to mark the beginning of a step
26
- # argument.
27
- def left_delimiter
28
- @left_delimiter
29
- end
30
-
31
- # Sets the left delimiter that will be used by default when determining
32
- # step arguments.
33
- def left_delimiter=(new_delimiter)
34
- @left_delimiter = new_delimiter
35
- end
36
-
37
- # Returns the right delimiter, which is used to mark the end of a step
38
- # argument.
39
- def right_delimiter
40
- @right_delimiter
41
- end
42
-
43
- # Sets the right delimiter that will be used by default when determining
44
- # step arguments.
45
- def right_delimiter=(new_delimiter)
46
- @right_delimiter = new_delimiter
47
- end
48
-
49
- # Sets the delimiter that will be used by default when determining the
50
- # boundaries of step arguments.
51
- def delimiter=(new_delimiter)
52
- self.left_delimiter = new_delimiter
53
- self.right_delimiter = new_delimiter
54
- end
55
-
56
- # Loads the step patterns contained in the given file into the World.
57
- def load_step_file(file_path)
58
- File.open(file_path, 'r') do |file|
59
- file.readlines.each do |line|
60
- if step_def_line?(line)
61
- the_reg_ex = extract_regular_expression(line)
62
- loaded_step_patterns << the_reg_ex
63
- end
64
- end
65
- end
66
- end
67
-
68
- # Loads the step pattern into the World.
69
- def load_step_pattern(pattern)
70
- loaded_step_patterns << pattern
71
- end
72
-
73
- # Returns the step patterns that have been loaded into the World.
74
- def loaded_step_patterns
75
- @defined_expressions ||= []
76
- end
77
-
78
- # Clears the step patterns that have been loaded into the World.
79
- def clear_step_patterns
80
- @defined_expressions = []
81
- end
82
-
83
-
84
- private
85
-
86
-
87
- # Make life easier by ensuring that the only forward slashes in the
88
- # regular expression are the important ones.
89
- def sanitize_line(line)
90
- line.gsub('\/', SANITARY_STRING)
91
- end
92
-
93
- # And be sure to restore the line to its original state.
94
- def desanitize_line(line)
95
- line.gsub(SANITARY_STRING, '\/')
96
- end
97
-
98
- # Returns whether or not the passed line is a step pattern.
99
- def step_def_line?(line)
100
- !!(sanitize_line(line) =~ STEP_DEF_LINE_PATTERN)
101
- end
102
-
103
- # Returns the regular expression portion of a step pattern line.
104
- def extract_regular_expression(line)
105
- line = desanitize_line(sanitize_line(line).match(STEP_DEF_PATTERN_CAPTURE_PATTERN)[1])
106
- line = line.slice(1..(line.length - 2))
107
-
108
- Regexp.new(line)
109
- end
110
-
111
- end
112
- end
113
- end
@@ -1,76 +0,0 @@
1
- require 'spec_helper'
2
-
3
- SimpleCov.command_name('TableRow') unless RUBY_VERSION.to_s < '1.9.0'
4
-
5
- describe 'TableRow, Integration' do
6
-
7
- let(:clazz) { CukeModeler::TableRow }
8
-
9
-
10
- describe 'unique behavior' do
11
-
12
- describe 'getting ancestors' do
13
-
14
- before(:each) do
15
- source = ['Feature: Test feature',
16
- '',
17
- ' Scenario: Test test',
18
- ' * a step:',
19
- ' | a | table |']
20
- source = source.join("\n")
21
-
22
- file_path = "#{@default_file_directory}/table_row_test_file.feature"
23
- File.open(file_path, 'w') { |file| file.write(source) }
24
- end
25
-
26
- let(:directory) { CukeModeler::Directory.new(@default_file_directory) }
27
- let(:table_row) { directory.feature_files.first.features.first.tests.first.steps.first.block.row_elements.first }
28
-
29
-
30
- it 'can get its directory' do
31
- ancestor = table_row.get_ancestor(:directory)
32
-
33
- ancestor.should equal directory
34
- end
35
-
36
- it 'can get its feature file' do
37
- ancestor = table_row.get_ancestor(:feature_file)
38
-
39
- ancestor.should equal directory.feature_files.first
40
- end
41
-
42
- it 'can get its feature' do
43
- ancestor = table_row.get_ancestor(:feature)
44
-
45
- ancestor.should equal directory.feature_files.first.features.first
46
- end
47
-
48
- it 'can get its test' do
49
- ancestor = table_row.get_ancestor(:test)
50
-
51
- ancestor.should equal directory.feature_files.first.features.first.tests.first
52
- end
53
-
54
- it 'can get its step' do
55
- ancestor = table_row.get_ancestor(:step)
56
-
57
- ancestor.should equal directory.feature_files.first.features.first.tests.first.steps.first
58
- end
59
-
60
- it 'can get its table' do
61
- ancestor = table_row.get_ancestor(:table)
62
-
63
- ancestor.should equal directory.feature_files.first.features.first.tests.first.steps.first.block
64
- end
65
-
66
- it 'returns nil if it does not have the requested type of ancestor' do
67
- ancestor = table_row.get_ancestor(:example)
68
-
69
- ancestor.should be_nil
70
- end
71
-
72
- end
73
-
74
- end
75
-
76
- end
@@ -1,14 +0,0 @@
1
- require 'spec_helper'
2
-
3
- SimpleCov.command_name('World') unless RUBY_VERSION.to_s < '1.9.0'
4
-
5
- describe 'World, Integration' do
6
-
7
- let(:world) { CukeModeler::World }
8
-
9
- before(:each) do
10
- @world.loaded_step_patterns.clear
11
- end
12
-
13
- # Nothing left to do here for now.
14
- end
@@ -1,18 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for 'a containing element' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:element) { clazz.new }
8
-
9
-
10
- it 'has children' do
11
- element.should respond_to(:contains)
12
- end
13
-
14
- it 'returns a collection of children' do
15
- element.contains.is_a?(Array).should be_true
16
- end
17
-
18
- end
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- SimpleCov.command_name('FeatureElement') unless RUBY_VERSION.to_s < '1.9.0'
4
-
5
- describe 'FeatureElement, Unit' do
6
-
7
- let(:clazz) { CukeModeler::FeatureElement }
8
- let(:element) { clazz.new }
9
-
10
- describe 'common behavior' do
11
-
12
- it_should_behave_like 'a feature element'
13
- it_should_behave_like 'a nested element'
14
- it_should_behave_like 'a prepopulated element'
15
- it_should_behave_like 'a bare bones element'
16
-
17
- end
18
-
19
- end
@@ -1,52 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for 'a feature element' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:element) { clazz.new }
8
-
9
-
10
- it 'has a name' do
11
- element.should respond_to(:name)
12
- end
13
-
14
- it 'can change its name' do
15
- expect(element).to respond_to(:name=)
16
-
17
- element.name = :some_name
18
- element.name.should == :some_name
19
- element.name = :some_other_name
20
- element.name.should == :some_other_name
21
- end
22
-
23
- it 'has a description' do
24
- element.should respond_to(:description)
25
- element.should respond_to(:description_text)
26
- end
27
-
28
- it 'can get and set its description' do
29
- expect(element).to respond_to(:description=)
30
- expect(element).to respond_to(:description_text=)
31
-
32
- element.description = :some_description
33
- element.description.should == :some_description
34
- element.description = :some_other_description
35
- element.description.should == :some_other_description
36
-
37
- element.description_text = :some_description
38
- element.description_text.should == :some_description
39
- element.description_text = :some_other_description
40
- element.description_text.should == :some_other_description
41
- end
42
-
43
- it 'starts with no name' do
44
- element.name.should == ''
45
- end
46
-
47
- it 'starts with no description' do
48
- element.description.should == []
49
- element.description_text.should == ''
50
- end
51
-
52
- end
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for 'a nested element' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:nested_element) { clazz.new }
8
-
9
-
10
- it 'has a parent element' do
11
- nested_element.should respond_to(:parent_element)
12
- end
13
-
14
- it 'can change its parent element' do
15
- expect(nested_element).to respond_to(:parent_element=)
16
-
17
- nested_element.parent_element = :some_parent_element
18
- nested_element.parent_element.should == :some_parent_element
19
- nested_element.parent_element = :some_other_parent_element
20
- nested_element.parent_element.should == :some_other_parent_element
21
- end
22
-
23
- it 'starts with no parent element' do
24
- nested_element.parent_element.should == nil
25
- end
26
-
27
- it 'has access to its ancestors' do
28
- nested_element.should respond_to(:get_ancestor)
29
- end
30
-
31
- it 'gets an ancestor based on type' do
32
- (clazz.instance_method(:get_ancestor).arity == 1).should be_true
33
- end
34
-
35
- it 'raises and exception if an unknown ancestor type is requested' do
36
- expect { nested_element.get_ancestor(:bad_ancestor_type) }.to raise_exception(ArgumentError)
37
- end
38
-
39
- end
@@ -1,14 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for 'a prepopulated element' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:element) { clazz.new }
8
-
9
-
10
- it 'can take an argument' do
11
- (clazz.instance_method(:initialize).arity != 0).should be_true
12
- end
13
-
14
- end
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for 'a raw element' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:element) { clazz.new }
8
-
9
-
10
- it 'has an underlying implementation representation' do
11
- element.should respond_to(:raw_element)
12
- end
13
-
14
- it 'can change its underlying implementation representation' do
15
- expect(element).to respond_to(:raw_element=)
16
-
17
- element.raw_element = :some_raw_element
18
- element.raw_element.should == :some_raw_element
19
- element.raw_element = :some_other_raw_element
20
- element.raw_element.should == :some_other_raw_element
21
- end
22
-
23
- it 'starts with no underlying implementation representation' do
24
- element.raw_element.should == nil
25
- end
26
-
27
- end