cuke_modeler 0.3.0 → 0.4.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/History.rdoc +8 -0
  3. data/features/step_definitions/feature_steps.rb +1 -1
  4. data/features/step_definitions/test_steps.rb +6 -2
  5. data/lib/cuke_modeler/directory.rb +7 -10
  6. data/lib/cuke_modeler/version.rb +1 -1
  7. data/spec/integration/background_integration_spec.rb +53 -40
  8. data/spec/integration/directory_integration_spec.rb +39 -26
  9. data/spec/integration/doc_string_integration_spec.rb +51 -43
  10. data/spec/integration/example_integration_spec.rb +71 -60
  11. data/spec/integration/feature_file_integration_spec.rb +36 -22
  12. data/spec/integration/feature_integration_spec.rb +113 -104
  13. data/spec/integration/outline_integration_spec.rb +71 -56
  14. data/spec/integration/row_integration_spec.rb +72 -0
  15. data/spec/integration/scenario_integration_spec.rb +61 -46
  16. data/spec/integration/step_integration_spec.rb +126 -117
  17. data/spec/integration/table_integration_spec.rb +67 -52
  18. data/spec/integration/table_row_integration_spec.rb +48 -40
  19. data/spec/integration/tag_integration_spec.rb +53 -45
  20. data/spec/integration/world_integration_spec.rb +2 -1
  21. data/spec/spec_helper.rb +15 -12
  22. data/spec/unit/background_unit_spec.rb +65 -50
  23. data/spec/unit/bare_bones_unit_specs.rb +2 -3
  24. data/spec/unit/containing_element_unit_specs.rb +6 -7
  25. data/spec/unit/directory_unit_spec.rb +103 -64
  26. data/spec/unit/doc_string_unit_spec.rb +113 -95
  27. data/spec/unit/example_unit_spec.rb +235 -219
  28. data/spec/unit/feature_element_unit_spec.rb +6 -6
  29. data/spec/unit/feature_element_unit_specs.rb +28 -24
  30. data/spec/unit/feature_file_unit_spec.rb +73 -63
  31. data/spec/unit/feature_unit_spec.rb +145 -111
  32. data/spec/unit/nested_element_unit_specs.rb +14 -13
  33. data/spec/unit/nested_unit_spec.rb +24 -21
  34. data/spec/unit/outline_unit_spec.rb +92 -78
  35. data/spec/unit/parsing_unit_spec.rb +55 -51
  36. data/spec/unit/prepopulated_unit_specs.rb +2 -3
  37. data/spec/unit/raw_element_unit_specs.rb +12 -11
  38. data/spec/unit/raw_unit_spec.rb +15 -12
  39. data/spec/unit/row_unit_spec.rb +68 -52
  40. data/spec/unit/scenario_unit_spec.rb +76 -62
  41. data/spec/unit/sourceable_unit_spec.rb +8 -6
  42. data/spec/unit/sourced_element_unit_specs.rb +4 -6
  43. data/spec/unit/step_unit_spec.rb +231 -203
  44. data/spec/unit/table_row_unit_spec.rb +68 -52
  45. data/spec/unit/table_unit_spec.rb +100 -82
  46. data/spec/unit/tag_unit_spec.rb +62 -48
  47. data/spec/unit/taggable_unit_spec.rb +58 -51
  48. data/spec/unit/tagged_element_unit_specs.rb +28 -26
  49. data/spec/unit/test_element_unit_spec.rb +33 -27
  50. data/spec/unit/test_element_unit_specs.rb +15 -14
  51. data/spec/unit/world_unit_spec.rb +94 -84
  52. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aba3b67c01fe77623220706770527d9f418fda77
4
- data.tar.gz: 1435b488abd5ab3dd950c15c1eca2fa9ae4ed667
3
+ metadata.gz: 1b7765a28c904d7029be528292e466d45658e0d4
4
+ data.tar.gz: e9348d536a8e54578858e3e3ba1604f62494069b
5
5
  SHA512:
6
- metadata.gz: 05804620e288fc68ebdc259cd87cfbd325bdb6dec0ecc9b6836e3ba25b510146435b58db17966495d1c61fc0beb1bea6ba7b85461ccb40bc5ce2405b812902b4
7
- data.tar.gz: 98c6e9d3f981873da08d1fcec2cc6d3d7c1db79f749c192e8f6c08b757f43bb08795516488ecec58a63181420a1be27e9fbf72b7d046ceb32461ca9eb50b1b9f
6
+ metadata.gz: 43e9dafda2fd090bc707e3aa7af7b9522b9a2eb70e8769f00ed88c3b515724473dddcc7e881d31c62c2094ef4af9719faf2f2c5c79925b32647026a32fe5aa1d
7
+ data.tar.gz: 921be93201b8a2bc6aa4a22a77ce4aa177de988017db9885a802a1c535b02ca5952c972ec874fbb20284251d8cfeb035eb4404b46dd38295f1ed859e0bcc1d2c
@@ -1,3 +1,11 @@
1
+ === Version 0.4.0 / 2016-05-01
2
+
3
+ * The path of a Directory object is now a changeable attribute instead of only being populated if the instance was
4
+ given a diretory to model.
5
+ * Bug fix - Fixed a bug that occurred if a Directory object was asked for its #name when it was created 'empty'
6
+ instead of modeling an existing directory.
7
+
8
+
1
9
  === Version 0.3.0 / 2016-04-24
2
10
 
3
11
  * Support for version 4.x of the 'gherkin' gem added.
@@ -6,7 +6,7 @@ Then /^(?:the )?feature(?: "([^"]*)")? is found to have the following properties
6
6
  expected = expected_value
7
7
  actual = @parsed_files[file - 1].feature.send(property.to_sym).to_s
8
8
 
9
- assert(actual == expected, "Expected: #{expected}\n but was: #{actual}")
9
+ assert(actual == expected, "Expected #{property} to be: #{expected}\n but was: #{actual}")
10
10
  end
11
11
  end
12
12
 
@@ -5,7 +5,11 @@ Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? is found to have the
5
5
  properties = properties.rows_hash
6
6
 
7
7
  properties.each do |property, value|
8
- assert value == @parsed_files[file - 1].feature.tests[test - 1].send(property.to_sym).to_s
8
+
9
+ actual = @parsed_files[file - 1].feature.tests[test - 1].send(property.to_sym).to_s
10
+ expected = value
11
+
12
+ assert(actual == expected, "Expected #{property} to be: #{expected}\n but was: #{actual}")
9
13
  end
10
14
  end
11
15
 
@@ -38,7 +42,7 @@ Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? steps are as follows:
38
42
  end
39
43
  end
40
44
 
41
- assert actual_steps.flatten == steps
45
+ expect(actual_steps.flatten).to eq(steps)
42
46
  end
43
47
 
44
48
  Then /^(?:the )?(?:feature "([^"]*)" )?test(?: "([^"]*)")? is found to have the following tags:$/ do |file, test, expected_tags|
@@ -14,12 +14,14 @@ module CukeModeler
14
14
  # The Directory objects contained by the Directory
15
15
  attr_accessor :directories
16
16
 
17
+ # The file path of the Directory
18
+ attr_accessor :path
19
+
17
20
 
18
21
  # Creates a new Directory object and, if *directory_parsed* is provided,
19
22
  # populates the object.
20
23
  def initialize(directory_parsed = nil)
21
- @directory = directory_parsed
22
-
24
+ @path = directory_parsed
23
25
  @feature_files = []
24
26
  @directories = []
25
27
 
@@ -31,12 +33,7 @@ module CukeModeler
31
33
 
32
34
  # Returns the name of the directory.
33
35
  def name
34
- File.basename(@directory.gsub('\\', '/'))
35
- end
36
-
37
- # Returns the path of the directory.
38
- def path
39
- @directory
36
+ File.basename(@path.gsub('\\', '/')) if @path
40
37
  end
41
38
 
42
39
  # Returns the number of sub-directories contained in the directory.
@@ -65,12 +62,12 @@ module CukeModeler
65
62
 
66
63
 
67
64
  def build_directory
68
- entries = Dir.entries(@directory)
65
+ entries = Dir.entries(@path)
69
66
  entries.delete '.'
70
67
  entries.delete '..'
71
68
 
72
69
  entries.each do |entry|
73
- entry = "#{@directory}/#{entry}"
70
+ entry = "#{@path}/#{entry}"
74
71
 
75
72
  case
76
73
  when File.directory?(entry)
@@ -1,3 +1,3 @@
1
1
  module CukeModeler
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -4,67 +4,80 @@ SimpleCov.command_name('Background') unless RUBY_VERSION.to_s < '1.9.0'
4
4
 
5
5
  describe 'Background, Integration' do
6
6
 
7
- it 'properly sets its child elements' do
8
- source = [' Background: Test background',
9
- ' * a step']
10
- source = source.join("\n")
7
+ let(:clazz) { CukeModeler::Background }
11
8
 
12
- background = CukeModeler::Background.new(source)
13
- step = background.steps.first
14
9
 
15
- step.parent_element.should equal background
16
- end
17
-
18
- context 'getting stuff' do
10
+ describe 'unique behavior' do
19
11
 
20
- before(:each) do
21
- source = ['Feature: Test feature',
22
- '',
23
- ' Background: Test background',
24
- ' * a step:']
12
+ it 'properly sets its child elements' do
13
+ source = [' Background: Test background',
14
+ ' * a step']
25
15
  source = source.join("\n")
26
16
 
27
- file_path = "#{@default_file_directory}/background_test_file.feature"
28
- File.open(file_path, 'w') { |file| file.write(source) }
17
+ background = clazz.new(source)
18
+ step = background.steps.first
29
19
 
30
- @directory = CukeModeler::Directory.new(@default_file_directory)
31
- @background = @directory.feature_files.first.features.first.background
20
+ expect(step.parent_element).to equal(background)
32
21
  end
33
22
 
23
+ describe 'getting ancestors' do
34
24
 
35
- it 'can get its directory' do
36
- directory = @background.get_ancestor(:directory)
25
+ before(:each) do
26
+ source = ['Feature: Test feature',
27
+ '',
28
+ ' Background: Test background',
29
+ ' * a step:']
30
+ source = source.join("\n")
37
31
 
38
- directory.should equal @directory
39
- end
32
+ file_path = "#{@default_file_directory}/background_test_file.feature"
33
+ File.open(file_path, 'w') { |file| file.write(source) }
34
+ end
40
35
 
41
- it 'can get its feature file' do
42
- feature_file = @background.get_ancestor(:feature_file)
36
+ let(:directory) { CukeModeler::Directory.new(@default_file_directory) }
37
+ let(:background) { directory.feature_files.first.features.first.background }
43
38
 
44
- feature_file.should equal @directory.feature_files.first
45
- end
46
39
 
47
- it 'can get its feature' do
48
- feature = @background.get_ancestor(:feature)
40
+ it 'can get its directory' do
41
+ ancestor = background.get_ancestor(:directory)
49
42
 
50
- feature.should equal @directory.feature_files.first.features.first
51
- end
43
+ expect(ancestor).to equal(directory)
44
+ end
45
+
46
+ it 'can get its feature file' do
47
+ ancestor = background.get_ancestor(:feature_file)
48
+
49
+ expect(ancestor).to equal(directory.feature_files.first)
50
+ end
51
+
52
+ it 'can get its feature' do
53
+ ancestor = background.get_ancestor(:feature)
52
54
 
53
- it 'returns nil if it does not have the requested type of ancestor' do
54
- example = @background.get_ancestor(:example)
55
+ expect(ancestor).to equal(directory.feature_files.first.features.first)
56
+ end
57
+
58
+ it 'returns nil if it does not have the requested type of ancestor' do
59
+ ancestor = background.get_ancestor(:example)
60
+
61
+ expect(ancestor).to be_nil
62
+ end
55
63
 
56
- example.should be_nil
57
64
  end
58
65
 
59
- end
66
+ describe 'background output edge cases' do
67
+
68
+ context 'a new background object' do
69
+
70
+ let(:background) { clazz.new }
71
+
72
+
73
+ it 'can output a background that has only steps' do
74
+ background.steps = [CukeModeler::Step.new]
60
75
 
61
- context 'background output edge cases' do
76
+ expect { background.to_s }.to_not raise_error
77
+ end
62
78
 
63
- it 'can output a background that has only steps' do
64
- background = CukeModeler::Background.new
65
- background.steps = [CukeModeler::Step.new]
79
+ end
66
80
 
67
- expect { background.to_s }.to_not raise_error
68
81
  end
69
82
 
70
83
  end
@@ -4,45 +4,58 @@ SimpleCov.command_name('Directory') unless RUBY_VERSION.to_s < '1.9.0'
4
4
 
5
5
  describe 'Directory, Integration' do
6
6
 
7
- it 'properly sets its child elements' do
8
- nested_directory = "#{@default_file_directory}/nested_directory"
9
- file_path = "#{@default_file_directory}/#{@default_feature_file_name}"
7
+ let(:clazz) { CukeModeler::Directory }
10
8
 
11
- FileUtils.mkdir(nested_directory)
12
- File.open(file_path, "w") { |file|
13
- file.puts('Feature: Test feature')
14
- }
15
9
 
16
- directory = CukeModeler::Directory.new(@default_file_directory)
17
- nested_directory = directory.directories.first
18
- file = directory.feature_files.first
10
+ describe 'unique behavior' do
19
11
 
20
- nested_directory.parent_element.should equal directory
21
- file.parent_element.should equal directory
22
- end
23
-
24
- context 'getting stuff' do
25
-
26
- before(:each) do
12
+ it 'properly sets its child elements' do
27
13
  nested_directory = "#{@default_file_directory}/nested_directory"
14
+ file_path = "#{@default_file_directory}/#{@default_feature_file_name}"
15
+
28
16
  FileUtils.mkdir(nested_directory)
17
+ File.open(file_path, "w") { |file|
18
+ file.puts('Feature: Test feature')
19
+ }
29
20
 
30
- @directory = CukeModeler::Directory.new(@default_file_directory)
31
- @nested_directory = @directory.directories.first
32
- end
21
+ directory = clazz.new(@default_file_directory)
22
+ nested_directory = directory.directories.first
23
+ file = directory.feature_files.first
33
24
 
25
+ expect(nested_directory.parent_element).to equal(directory)
26
+ expect(file.parent_element).to equal(directory)
27
+ end
34
28
 
35
- it 'can get its directory' do
36
- directory = @nested_directory.get_ancestor(:directory)
29
+ it 'cannot model a non-existent directory' do
30
+ path = "#{@default_file_directory}/missing_directory"
37
31
 
38
- directory.should equal @directory
32
+ expect { clazz.new(path) }.to raise_error(ArgumentError)
39
33
  end
40
34
 
41
- it 'returns nil if it does not have the requested type of ancestor' do
42
- example = @nested_directory.get_ancestor(:example)
35
+ describe 'getting ancestors' do
36
+
37
+ before(:each) do
38
+ FileUtils.mkdir("#{@default_file_directory}/nested_directory")
39
+ end
40
+
41
+ let(:directory) { clazz.new(@default_file_directory) }
42
+ let(:nested_directory) { directory.directories.first }
43
+
44
+
45
+ it 'can get its directory' do
46
+ ancestor = nested_directory.get_ancestor(:directory)
47
+
48
+ expect(ancestor).to equal(directory)
49
+ end
50
+
51
+ it 'returns nil if it does not have the requested type of ancestor' do
52
+ ancestor = nested_directory.get_ancestor(:example)
53
+
54
+ expect(ancestor).to be_nil
55
+ end
43
56
 
44
- example.should be_nil
45
57
  end
46
58
 
47
59
  end
60
+
48
61
  end
@@ -4,63 +4,71 @@ SimpleCov.command_name('DocString') unless RUBY_VERSION.to_s < '1.9.0'
4
4
 
5
5
  describe 'DocString, Integration' do
6
6
 
7
- context 'getting stuff' do
8
-
9
- before(:each) do
10
- source = ['Feature: Test feature',
11
- '',
12
- ' Scenario: Test test',
13
- ' * a big step:',
14
- ' """',
15
- ' a',
16
- ' doc',
17
- ' string',
18
- ' """']
19
- source = source.join("\n")
20
-
21
- file_path = "#{@default_file_directory}/doc_string_test_file.feature"
22
- File.open(file_path, 'w') { |file| file.write(source) }
23
-
24
- @directory = CukeModeler::Directory.new(@default_file_directory)
25
- @doc_string = @directory.feature_files.first.features.first.tests.first.steps.first.block
26
- end
7
+ let(:clazz) { CukeModeler::DocString }
27
8
 
28
9
 
29
- it 'can get its directory' do
30
- directory = @doc_string.get_ancestor(:directory)
10
+ describe 'unique behavior' do
31
11
 
32
- directory.should equal @directory
33
- end
12
+ describe 'getting ancestors' do
34
13
 
35
- it 'can get its feature file' do
36
- feature_file = @doc_string.get_ancestor(:feature_file)
14
+ before(:each) do
15
+ source = ['Feature: Test feature',
16
+ '',
17
+ ' Scenario: Test test',
18
+ ' * a big step:',
19
+ ' """',
20
+ ' a',
21
+ ' doc',
22
+ ' string',
23
+ ' """']
24
+ source = source.join("\n")
37
25
 
38
- feature_file.should equal @directory.feature_files.first
39
- end
26
+ file_path = "#{@default_file_directory}/doc_string_test_file.feature"
27
+ File.open(file_path, 'w') { |file| file.write(source) }
28
+ end
40
29
 
41
- it 'can get its feature' do
42
- feature = @doc_string.get_ancestor(:feature)
30
+ let(:directory) { CukeModeler::Directory.new(@default_file_directory) }
31
+ let(:doc_string) { directory.feature_files.first.features.first.tests.first.steps.first.block }
43
32
 
44
- feature.should equal @directory.feature_files.first.features.first
45
- end
46
33
 
47
- it 'can get its test' do
48
- test = @doc_string.get_ancestor(:test)
34
+ it 'can get its directory' do
35
+ ancestor = doc_string.get_ancestor(:directory)
49
36
 
50
- test.should equal @directory.feature_files.first.features.first.tests.first
51
- end
37
+ expect(ancestor).to equal(directory)
38
+ end
52
39
 
53
- it 'can get its step' do
54
- step = @doc_string.get_ancestor(:step)
40
+ it 'can get its feature file' do
41
+ ancestor = doc_string.get_ancestor(:feature_file)
55
42
 
56
- step.should equal @directory.feature_files.first.features.first.tests.first.steps.first
57
- end
43
+ expect(ancestor).to equal(directory.feature_files.first)
44
+ end
45
+
46
+ it 'can get its feature' do
47
+ ancestor = doc_string.get_ancestor(:feature)
58
48
 
59
- it 'returns nil if it does not have the requested type of ancestor' do
60
- example = @doc_string.get_ancestor(:example)
49
+ expect(ancestor).to equal(directory.feature_files.first.features.first)
50
+ end
51
+
52
+ it 'can get its test' do
53
+ ancestor = doc_string.get_ancestor(:test)
54
+
55
+ expect(ancestor).to equal(directory.feature_files.first.features.first.tests.first)
56
+ end
57
+
58
+ it 'can get its step' do
59
+ ancestor = doc_string.get_ancestor(:step)
60
+
61
+ expect(ancestor).to equal(directory.feature_files.first.features.first.tests.first.steps.first)
62
+ end
63
+
64
+ it 'returns nil if it does not have the requested type of ancestor' do
65
+ ancestor = doc_string.get_ancestor(:example)
66
+
67
+ expect(ancestor).to be_nil
68
+ end
61
69
 
62
- example.should be_nil
63
70
  end
64
71
 
65
72
  end
73
+
66
74
  end
@@ -4,92 +4,103 @@ SimpleCov.command_name('Example') unless RUBY_VERSION.to_s < '1.9.0'
4
4
 
5
5
  describe 'Example, Integration' do
6
6
 
7
- it 'properly sets its child elements' do
8
- source = ['@a_tag',
9
- 'Examples:',
10
- ' | param |',
11
- ' | value 1 |']
12
- source = source.join("\n")
13
-
14
- example = CukeModeler::Example.new(source)
15
- rows = example.row_elements
16
- tag = example.tag_elements.first
17
-
18
- rows[0].parent_element.should equal example
19
- rows[1].parent_element.should equal example
20
- tag.parent_element.should equal example
21
- end
7
+ let(:clazz) { CukeModeler::Example }
8
+
22
9
 
23
- context 'getting stuff' do
10
+ describe 'unique behavior' do
24
11
 
25
- before(:each) do
26
- source = ['Feature: Test feature',
27
- '',
28
- ' Scenario Outline: Test test',
29
- ' * a step',
30
- ' Examples: Test example',
31
- ' | a param |',
32
- ' | a value |']
12
+ it 'properly sets its child elements' do
13
+ source = ['@a_tag',
14
+ 'Examples:',
15
+ ' | param |',
16
+ ' | value 1 |']
33
17
  source = source.join("\n")
34
18
 
35
- file_path = "#{@default_file_directory}/example_test_file.feature"
36
- File.open(file_path, 'w') { |file| file.write(source) }
19
+ example = clazz.new(source)
20
+ rows = example.row_elements
21
+ tag = example.tag_elements.first
37
22
 
38
- @directory = CukeModeler::Directory.new(@default_file_directory)
39
- @example = @directory.feature_files.first.features.first.tests.first.examples.first
23
+ expect(rows[0].parent_element).to equal(example)
24
+ expect(rows[1].parent_element).to equal(example)
25
+ expect(tag.parent_element).to equal(example)
40
26
  end
41
27
 
28
+ describe 'getting ancestors' do
42
29
 
43
- it 'can get its directory' do
44
- directory = @example.get_ancestor(:directory)
30
+ before(:each) do
31
+ source = ['Feature: Test feature',
32
+ '',
33
+ ' Scenario Outline: Test test',
34
+ ' * a step',
35
+ ' Examples: Test example',
36
+ ' | a param |',
37
+ ' | a value |']
38
+ source = source.join("\n")
45
39
 
46
- directory.should equal @directory
47
- end
40
+ file_path = "#{@default_file_directory}/example_test_file.feature"
41
+ File.open(file_path, 'w') { |file| file.write(source) }
42
+ end
48
43
 
49
- it 'can get its feature file' do
50
- feature_file = @example.get_ancestor(:feature_file)
44
+ let(:directory) { CukeModeler::Directory.new(@default_file_directory) }
45
+ let(:example) { directory.feature_files.first.features.first.tests.first.examples.first }
51
46
 
52
- feature_file.should equal @directory.feature_files.first
53
- end
54
47
 
55
- it 'can get its feature' do
56
- feature = @example.get_ancestor(:feature)
48
+ it 'can get its directory' do
49
+ ancestor = example.get_ancestor(:directory)
57
50
 
58
- feature.should equal @directory.feature_files.first.features.first
59
- end
51
+ expect(ancestor).to equal(directory)
52
+ end
60
53
 
61
- it 'can get its test' do
62
- test = @example.get_ancestor(:test)
54
+ it 'can get its feature file' do
55
+ ancestor = example.get_ancestor(:feature_file)
63
56
 
64
- test.should equal @directory.feature_files.first.features.first.tests.first
65
- end
57
+ expect(ancestor).to equal(directory.feature_files.first)
58
+ end
66
59
 
67
- it 'returns nil if it does not have the requested type of ancestor' do
68
- example = @example.get_ancestor(:example)
60
+ it 'can get its feature' do
61
+ ancestor = example.get_ancestor(:feature)
69
62
 
70
- example.should be_nil
71
- end
63
+ expect(ancestor).to equal(directory.feature_files.first.features.first)
64
+ end
72
65
 
73
- end
66
+ it 'can get its test' do
67
+ ancestor = example.get_ancestor(:test)
74
68
 
75
- context 'example output edge cases' do
69
+ expect(ancestor).to equal(directory.feature_files.first.features.first.tests.first)
70
+ end
76
71
 
77
- before(:each) do
78
- @example = CukeModeler::Example.new
79
- end
72
+ it 'returns nil if it does not have the requested type of ancestor' do
73
+ ancestor = example.get_ancestor(:example)
80
74
 
81
- it 'can output an example that has only a tag elements' do
82
- @example.tag_elements = [CukeModeler::Tag.new]
75
+ expect(ancestor).to be_nil
76
+ end
83
77
 
84
- expect { @example.to_s }.to_not raise_error
85
78
  end
86
79
 
87
- #todo - remove once Hash rows are no longer supported
88
- it 'can output an example that has only row elements' do
89
- @example.row_elements = [CukeModeler::Row.new]
80
+ describe 'example output edge cases' do
81
+
82
+ context 'a new example object' do
83
+
84
+ let(:example) { clazz.new }
85
+
86
+
87
+ it 'can output an example that has only tag elements' do
88
+ example.tag_elements = [CukeModeler::Tag.new]
89
+
90
+ expect { example.to_s }.to_not raise_error
91
+ end
92
+
93
+ #todo - remove once Hash rows are no longer supported
94
+ it 'can output an example that has only row elements' do
95
+ example.row_elements = [CukeModeler::Row.new]
96
+
97
+ expect { example.to_s }.to_not raise_error
98
+ end
99
+
100
+ end
90
101
 
91
- expect { @example.to_s }.to_not raise_error
92
102
  end
93
103
 
94
104
  end
105
+
95
106
  end