cuke_modeler 2.0.0 → 3.3.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 (126) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -2
  3. data/README.md +14 -16
  4. data/cuke_modeler.gemspec +12 -9
  5. data/lib/cuke_modeler.rb +1 -0
  6. data/lib/cuke_modeler/adapters/gherkin_10_adapter.rb +12 -0
  7. data/lib/cuke_modeler/adapters/gherkin_11_adapter.rb +12 -0
  8. data/lib/cuke_modeler/adapters/gherkin_12_adapter.rb +12 -0
  9. data/lib/cuke_modeler/adapters/gherkin_13_adapter.rb +12 -0
  10. data/lib/cuke_modeler/adapters/gherkin_14_adapter.rb +12 -0
  11. data/lib/cuke_modeler/adapters/gherkin_15_adapter.rb +12 -0
  12. data/lib/cuke_modeler/adapters/{gherkin_6_adapter.rb → gherkin_9_adapter.rb} +104 -69
  13. data/lib/cuke_modeler/containing.rb +15 -5
  14. data/lib/cuke_modeler/models/background.rb +1 -1
  15. data/lib/cuke_modeler/models/cell.rb +1 -1
  16. data/lib/cuke_modeler/models/comment.rb +1 -1
  17. data/lib/cuke_modeler/models/directory.rb +2 -2
  18. data/lib/cuke_modeler/models/doc_string.rb +1 -1
  19. data/lib/cuke_modeler/models/example.rb +1 -1
  20. data/lib/cuke_modeler/models/feature.rb +16 -5
  21. data/lib/cuke_modeler/models/feature_file.rb +2 -2
  22. data/lib/cuke_modeler/models/outline.rb +1 -1
  23. data/lib/cuke_modeler/models/row.rb +1 -1
  24. data/lib/cuke_modeler/models/rule.rb +99 -0
  25. data/lib/cuke_modeler/models/scenario.rb +1 -1
  26. data/lib/cuke_modeler/models/step.rb +1 -1
  27. data/lib/cuke_modeler/models/table.rb +1 -1
  28. data/lib/cuke_modeler/models/tag.rb +1 -1
  29. data/lib/cuke_modeler/parsing.rb +89 -110
  30. data/lib/cuke_modeler/version.rb +1 -1
  31. data/testing/cucumber/features/modeling/feature_modeling.feature +28 -7
  32. data/testing/cucumber/features/modeling/feature_output.feature +45 -23
  33. data/testing/cucumber/features/modeling/rule_modeling.feature +108 -0
  34. data/testing/cucumber/features/modeling/rule_output.feature +111 -0
  35. metadata +39 -140
  36. data/.gitignore +0 -18
  37. data/.simplecov +0 -7
  38. data/.travis.yml +0 -63
  39. data/Gemfile +0 -37
  40. data/Rakefile +0 -73
  41. data/appveyor.yml +0 -61
  42. data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +0 -274
  43. data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +0 -297
  44. data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +0 -309
  45. data/testing/cucumber/step_definitions/action_steps.rb +0 -13
  46. data/testing/cucumber/step_definitions/background_steps.rb +0 -1
  47. data/testing/cucumber/step_definitions/directory_steps.rb +0 -6
  48. data/testing/cucumber/step_definitions/doc_string_steps.rb +0 -1
  49. data/testing/cucumber/step_definitions/feature_file_steps.rb +0 -16
  50. data/testing/cucumber/step_definitions/feature_steps.rb +0 -7
  51. data/testing/cucumber/step_definitions/modeling_steps.rb +0 -49
  52. data/testing/cucumber/step_definitions/setup_steps.rb +0 -32
  53. data/testing/cucumber/step_definitions/step_steps.rb +0 -3
  54. data/testing/cucumber/step_definitions/table_steps.rb +0 -1
  55. data/testing/cucumber/step_definitions/tag_steps.rb +0 -3
  56. data/testing/cucumber/step_definitions/verification_steps.rb +0 -181
  57. data/testing/cucumber/support/env.rb +0 -30
  58. data/testing/dialect_helper.rb +0 -48
  59. data/testing/file_helper.rb +0 -47
  60. data/testing/gemfiles/gherkin2.gemfile +0 -33
  61. data/testing/gemfiles/gherkin3.gemfile +0 -26
  62. data/testing/gemfiles/gherkin4.gemfile +0 -27
  63. data/testing/gemfiles/gherkin5.gemfile +0 -27
  64. data/testing/gemfiles/gherkin6.gemfile +0 -10
  65. data/testing/rspec/spec/integration/adapters/gherkin_2_adapter_spec.rb +0 -166
  66. data/testing/rspec/spec/integration/adapters/gherkin_3_adapter_spec.rb +0 -166
  67. data/testing/rspec/spec/integration/adapters/gherkin_4_adapter_spec.rb +0 -165
  68. data/testing/rspec/spec/integration/adapters/gherkin_6_adapter_spec.rb +0 -166
  69. data/testing/rspec/spec/integration/models/background_integration_spec.rb +0 -442
  70. data/testing/rspec/spec/integration/models/cell_integration_spec.rb +0 -335
  71. data/testing/rspec/spec/integration/models/comment_integration_spec.rb +0 -177
  72. data/testing/rspec/spec/integration/models/directory_integration_spec.rb +0 -218
  73. data/testing/rspec/spec/integration/models/doc_string_integration_spec.rb +0 -402
  74. data/testing/rspec/spec/integration/models/example_integration_spec.rb +0 -741
  75. data/testing/rspec/spec/integration/models/feature_file_integration_spec.rb +0 -272
  76. data/testing/rspec/spec/integration/models/feature_integration_spec.rb +0 -650
  77. data/testing/rspec/spec/integration/models/model_integration_spec.rb +0 -15
  78. data/testing/rspec/spec/integration/models/outline_integration_spec.rb +0 -624
  79. data/testing/rspec/spec/integration/models/row_integration_spec.rb +0 -291
  80. data/testing/rspec/spec/integration/models/scenario_integration_spec.rb +0 -479
  81. data/testing/rspec/spec/integration/models/step_integration_spec.rb +0 -569
  82. data/testing/rspec/spec/integration/models/table_integration_spec.rb +0 -337
  83. data/testing/rspec/spec/integration/models/tag_integration_spec.rb +0 -259
  84. data/testing/rspec/spec/integration/nested_integration_spec.rb +0 -91
  85. data/testing/rspec/spec/integration/parsing_integration_spec.rb +0 -122
  86. data/testing/rspec/spec/integration/shared/models_integration_specs.rb +0 -18
  87. data/testing/rspec/spec/spec_helper.rb +0 -136
  88. data/testing/rspec/spec/unit/cuke_modeler_unit_spec.rb +0 -25
  89. data/testing/rspec/spec/unit/described_unit_spec.rb +0 -23
  90. data/testing/rspec/spec/unit/models/background_unit_spec.rb +0 -83
  91. data/testing/rspec/spec/unit/models/cell_unit_spec.rb +0 -68
  92. data/testing/rspec/spec/unit/models/comment_unit_spec.rb +0 -68
  93. data/testing/rspec/spec/unit/models/directory_unit_spec.rb +0 -127
  94. data/testing/rspec/spec/unit/models/doc_string_unit_spec.rb +0 -100
  95. data/testing/rspec/spec/unit/models/example_unit_spec.rb +0 -133
  96. data/testing/rspec/spec/unit/models/feature_file_unit_spec.rb +0 -125
  97. data/testing/rspec/spec/unit/models/feature_unit_spec.rb +0 -157
  98. data/testing/rspec/spec/unit/models/model_unit_spec.rb +0 -15
  99. data/testing/rspec/spec/unit/models/outline_unit_spec.rb +0 -117
  100. data/testing/rspec/spec/unit/models/row_unit_spec.rb +0 -68
  101. data/testing/rspec/spec/unit/models/scenario_unit_spec.rb +0 -86
  102. data/testing/rspec/spec/unit/models/step_unit_spec.rb +0 -109
  103. data/testing/rspec/spec/unit/models/table_unit_spec.rb +0 -77
  104. data/testing/rspec/spec/unit/models/tag_unit_spec.rb +0 -68
  105. data/testing/rspec/spec/unit/named_unit_spec.rb +0 -23
  106. data/testing/rspec/spec/unit/nested_unit_spec.rb +0 -43
  107. data/testing/rspec/spec/unit/parsed_unit_spec.rb +0 -27
  108. data/testing/rspec/spec/unit/parsing_unit_spec.rb +0 -54
  109. data/testing/rspec/spec/unit/shared/bare_bones_models_unit_specs.rb +0 -14
  110. data/testing/rspec/spec/unit/shared/containing_models_unit_specs.rb +0 -127
  111. data/testing/rspec/spec/unit/shared/described_models_unit_specs.rb +0 -38
  112. data/testing/rspec/spec/unit/shared/keyworded_models_unit_specs.rb +0 -58
  113. data/testing/rspec/spec/unit/shared/models_unit_specs.rb +0 -15
  114. data/testing/rspec/spec/unit/shared/named_models_unit_specs.rb +0 -39
  115. data/testing/rspec/spec/unit/shared/nested_models_unit_specs.rb +0 -51
  116. data/testing/rspec/spec/unit/shared/parsed_models_unit_specs.rb +0 -39
  117. data/testing/rspec/spec/unit/shared/prepopulated_models_unit_specs.rb +0 -18
  118. data/testing/rspec/spec/unit/shared/sourced_models_unit_specs.rb +0 -39
  119. data/testing/rspec/spec/unit/shared/stepped_models_unit_specs.rb +0 -46
  120. data/testing/rspec/spec/unit/shared/stringifiable_models_unit_specs.rb +0 -18
  121. data/testing/rspec/spec/unit/shared/tagged_models_unit_specs.rb +0 -72
  122. data/testing/rspec/spec/unit/sourceable_unit_spec.rb +0 -27
  123. data/testing/rspec/spec/unit/stepped_unit_spec.rb +0 -23
  124. data/testing/rspec/spec/unit/taggable_unit_spec.rb +0 -69
  125. data/testing/test_languages.json +0 -45
  126. data/todo.txt +0 -25
@@ -1,91 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Nested, Integration' do
5
-
6
- let(:nodule) { CukeModeler::Nested }
7
- let(:nested_model) { Object.new.extend(nodule) }
8
-
9
-
10
- describe 'unique behavior' do
11
-
12
- describe 'an object including the module' do
13
-
14
- describe 'getting ancestors' do
15
-
16
- context 'with a background ancestor' do
17
-
18
- let(:background) { CukeModeler::Background.new }
19
-
20
- before(:each) do
21
- nested_model.parent_model = background
22
- end
23
-
24
-
25
- it "will find its background as a 'test' ancestor" do
26
- ancestor = nested_model.get_ancestor(:test)
27
-
28
- expect(ancestor).to equal(background)
29
- end
30
-
31
- it "will find its background as a 'background' ancestor" do
32
- ancestor = nested_model.get_ancestor(:background)
33
-
34
- expect(ancestor).to equal(background)
35
- end
36
-
37
- end
38
-
39
- context 'with a scenario ancestor' do
40
-
41
- let(:scenario) { CukeModeler::Scenario.new }
42
-
43
- before(:each) do
44
- nested_model.parent_model = scenario
45
- end
46
-
47
-
48
- it "will find its scenario as a 'test' ancestor" do
49
- ancestor = nested_model.get_ancestor(:test)
50
-
51
- expect(ancestor).to equal(scenario)
52
- end
53
-
54
- it "will find its scenario as a 'scenario' ancestor" do
55
- ancestor = nested_model.get_ancestor(:scenario)
56
-
57
- expect(ancestor).to equal(scenario)
58
- end
59
-
60
- end
61
-
62
- context 'with an outline ancestor' do
63
-
64
- let(:outline) { CukeModeler::Outline.new }
65
-
66
- before(:each) do
67
- nested_model.parent_model = outline
68
- end
69
-
70
-
71
- it "will find its outline as a 'test' ancestor" do
72
- ancestor = nested_model.get_ancestor(:test)
73
-
74
- expect(ancestor).to equal(outline)
75
- end
76
-
77
- it "will find its outline as a 'outline' ancestor" do
78
- ancestor = nested_model.get_ancestor(:outline)
79
-
80
- expect(ancestor).to equal(outline)
81
- end
82
-
83
- end
84
-
85
- end
86
-
87
- end
88
-
89
- end
90
-
91
- end
@@ -1,122 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Parsing, Integration' do
5
-
6
- let(:nodule) { CukeModeler::Parsing }
7
-
8
-
9
- describe 'unique behavior' do
10
-
11
- it 'will complain if using an unknown version of `gherkin`' do
12
- original_version = Gem.loaded_specs['gherkin'].version
13
- unknown_version = Gem::Version.new('0.0.0')
14
-
15
- begin
16
- Gem.loaded_specs['gherkin'].instance_variable_set(:@version, unknown_version)
17
-
18
- expect { load "#{File.dirname(__FILE__)}/../../../../lib/cuke_modeler/parsing.rb" }.to raise_error("Unknown Gherkin version: '0.0.0'")
19
- ensure
20
- Gem.loaded_specs['gherkin'].instance_variable_set(:@version, original_version)
21
- end
22
- end
23
-
24
- it 'loads the correct dialects based on the version of Gherkin used', :gherkin6 => true do
25
- expect(nodule.dialects).to equal(Gherkin::DIALECTS)
26
- end
27
-
28
- it 'loads the correct dialects based on the version of Gherkin used', :gherkin3 => true, :gherkin4_5 => true do
29
- expect(nodule.dialects).to equal(Gherkin::DIALECTS)
30
- end
31
-
32
- it 'loads the correct dialects based on the version of Gherkin used', :gherkin2 => true do
33
- expect(nodule.dialects).to equal(Gherkin::I18n::LANGUAGES)
34
- end
35
-
36
- it 'can parse text that uses a non-default dialect' do
37
- source_text = "# language: en-au
38
- Pretty much:
39
-
40
- First off:
41
- Y'know foo
42
-
43
- Awww, look mate:
44
- It's just unbelievable that zip
45
- But at the end of the day I reckon bar
46
-
47
- Reckon it's like:
48
- Yeah nah zen
49
- Too right baz
50
- You'll wanna:
51
- | param |
52
- | value |"
53
-
54
- expect { nodule.parse_text(source_text) }.to_not raise_error
55
- end
56
-
57
- it 'raises and error if given something to parse besides a string' do
58
- expect { nodule.parse_text(5) }.to raise_error(ArgumentError, /Text to parse must be a String but got/)
59
- expect { nodule.parse_text("#{FEATURE_KEYWORD}:") }.to_not raise_error
60
- end
61
-
62
- it 'includes the type of object provided when raising an non-string exception' do
63
- expect { nodule.parse_text(:not_a_string) }.to raise_error(ArgumentError, /Symbol/)
64
- end
65
-
66
- # todo - Stop doing this. Just return a feature file rooted AST. (Will require major version number change)
67
- it 'returns an Array' do
68
- result = nodule.parse_text("#{FEATURE_KEYWORD}:")
69
- expect(result).to be_a(Array)
70
- end
71
-
72
- it 'raises an error if an error is encountered while parsing text' do
73
- expect { nodule.parse_text('bad file') }.to raise_error(ArgumentError, /Error encountered while parsing '.*'/)
74
- end
75
-
76
- it 'includes the file parsed in the error that it raises' do
77
- expect { nodule.parse_text('bad file', 'file foo.txt') }.to raise_error(/'file foo\.txt'/)
78
- end
79
-
80
- it 'has a default file name used while parsing if one is not provided' do
81
- expect { nodule.parse_text('bad file') }.to raise_error(ArgumentError, /'cuke_modeler_fake_file\.feature'/)
82
- end
83
-
84
- it 'includes the underlying error message in the error that it raises' do
85
- begin
86
- $old_method = CukeModeler::Parsing.method(:parsing_method)
87
-
88
- # Custom error type in order to ensure that we are throwing the correct thing
89
- module CukeModeler
90
- class TestError < StandardError
91
- end
92
- end
93
-
94
- # Monkey patch the parsing method to throw the error that we need for testing
95
- module CukeModeler
96
- module Parsing
97
- class << self
98
- def parsing_method(*args)
99
- raise(CukeModeler::TestError, 'something went wrong')
100
- end
101
- end
102
- end
103
- end
104
-
105
-
106
- expect { nodule.parse_text('bad file') }.to raise_error(/CukeModeler::TestError.*something went wrong/)
107
- ensure
108
- # Making sure that our changes don't escape a test and ruin the rest of the suite
109
- module CukeModeler
110
- module Parsing
111
- class << self
112
- define_method(:parsing_method, $old_method)
113
- end
114
- end
115
- end
116
- end
117
-
118
- end
119
-
120
- end
121
-
122
- end
@@ -1,18 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../../spec_helper"
2
-
3
- shared_examples_for 'a model, integration' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:model) { clazz.new }
8
-
9
-
10
- describe 'unique behavior' do
11
-
12
- it 'inherits from the common model class' do
13
- expect(model).to be_a(CukeModeler::Model)
14
- end
15
-
16
- end
17
-
18
- end
@@ -1,136 +0,0 @@
1
- unless RUBY_VERSION.to_s < '1.9.0'
2
- require 'simplecov'
3
- SimpleCov.command_name('rspec_tests')
4
- end
5
-
6
-
7
- # Ruby 1.8.x seems to have trouble if relative paths get too nested, so resolving the path before using it here
8
- this_dir = File.expand_path(File.dirname(__FILE__))
9
- require "#{this_dir}/../../../lib/cuke_modeler"
10
-
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"
24
- require "#{this_dir}/unit/shared/keyworded_models_unit_specs"
25
-
26
- require "#{this_dir}/../../dialect_helper"
27
- require "#{this_dir}/../../file_helper"
28
-
29
- require 'rubygems/mock_gem_ui'
30
-
31
-
32
- # Use a random dialect for testing in order to avoid hard coded language assumptions in the
33
- # implementation and making the test dialect the default dialect so that language headers
34
- # aren't needed for all of the test code. Only possible with some versions of Gherkin.
35
-
36
- gherkin_version = Gem.loaded_specs['gherkin'].version.version
37
-
38
- case gherkin_version
39
- when /^6\./
40
- # gherkin 6 does not preload the dialect module
41
- require 'gherkin/dialect' if Gem.loaded_specs['gherkin'].version.version[/^6\./]
42
-
43
- # TODO: choose randomly from Gherkin::DIALECTS once I figure out how to handle encodings...
44
- test_dialect = ['en', 'en-lol', 'en-pirate', 'en-Scouse'].sample
45
- puts "Testing with dialect '#{test_dialect}'..."
46
-
47
-
48
- CukeModeler::DialectHelper.set_dialect(Gherkin::DIALECTS[test_dialect])
49
- CukeModeler::Parsing.dialect = test_dialect
50
- when /^[543]\./
51
- # TODO: stop using test dialect and just randomize for all version of `gherkin`
52
- dialect_file_path = "#{this_dir}/../../test_languages.json"
53
- test_dialects = JSON.parse File.open(dialect_file_path, 'r:UTF-8').read
54
-
55
- Gherkin::DIALECTS.merge!(test_dialects)
56
-
57
-
58
- module Gherkin
59
- class Parser
60
-
61
- alias_method :original_parse, :parse
62
-
63
- def parse(token_scanner, token_matcher = TokenMatcher.new('cm-test'))
64
- original_parse(token_scanner, token_matcher)
65
- end
66
-
67
- end
68
- end
69
-
70
- CukeModeler::DialectHelper.set_dialect(test_dialects['cm-test'])
71
- CukeModeler::Parsing.dialect = 'cm-test'
72
- when /^2\./
73
- CukeModeler::DialectHelper.set_dialect(Gherkin::I18n::LANGUAGES['en'])
74
- CukeModeler::Parsing.dialect = 'en'
75
- else
76
- raise("Unknown Gherkin version: '#{gherkin_version}'")
77
- end
78
-
79
-
80
- RSpec.configure do |config|
81
- gherkin_version = Gem.loaded_specs['gherkin'].version.version
82
-
83
- case gherkin_version
84
- when /^6\./
85
- config.filter_run_excluding :gherkin2 => true,
86
- :gherkin3 => true,
87
- :gherkin4_5 => true,
88
- :gherkin6 => false
89
- when /^[54]\./
90
- config.filter_run_excluding :gherkin2 => true,
91
- :gherkin3 => true,
92
- :gherkin4_5 => false,
93
- :gherkin6 => true
94
- when /^3\./
95
- config.filter_run_excluding :gherkin2 => true,
96
- :gherkin3 => false,
97
- :gherkin4_5 => true,
98
- :gherkin6 => true
99
- when /^2\./
100
- config.filter_run_excluding :gherkin2 => false,
101
- :gherkin3 => true,
102
- :gherkin4_5 => true,
103
- :gherkin6 => true
104
- else
105
- raise("Unknown Gherkin version: '#{gherkin_version}'")
106
- end
107
-
108
- config.before(:suite) do
109
- FEATURE_KEYWORD = CukeModeler::DialectHelper.feature_keyword
110
- BACKGROUND_KEYWORD = CukeModeler::DialectHelper.background_keyword
111
- SCENARIO_KEYWORD = CukeModeler::DialectHelper.scenario_keyword
112
- OUTLINE_KEYWORD = CukeModeler::DialectHelper.outline_keyword
113
- EXAMPLE_KEYWORD = CukeModeler::DialectHelper.example_keyword
114
- STEP_KEYWORD = CukeModeler::DialectHelper.step_keyword
115
- GIVEN_KEYWORD = CukeModeler::DialectHelper.given_keyword
116
- THEN_KEYWORD = CukeModeler::DialectHelper.then_keyword
117
- end
118
-
119
- config.after(:suite) do
120
- CukeModeler::FileHelper.created_directories.each do |dir_path|
121
- FileUtils.remove_entry(dir_path, true)
122
- end
123
- end
124
-
125
-
126
- def assert_bidirectional_equality(base_thing, compared_thing)
127
- expect(base_thing).to eq(compared_thing)
128
- expect(compared_thing).to eq(base_thing)
129
- end
130
-
131
- def assert_bidirectional_inequality(base_thing, compared_thing)
132
- expect(base_thing).to_not eq(compared_thing)
133
- expect(compared_thing).to_not eq(base_thing)
134
- end
135
-
136
- end
@@ -1,25 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'the gem' do
5
-
6
- let(:gemspec) { eval(File.read "#{File.dirname(__FILE__)}/../../../../cuke_modeler.gemspec") }
7
-
8
-
9
- it 'validates cleanly' do
10
- mock_ui = Gem::MockGemUi.new
11
- Gem::DefaultUserInteraction.use_ui(mock_ui) { gemspec.validate }
12
-
13
- expect(mock_ui.error).to_not match(/warn/i)
14
- end
15
-
16
- end
17
-
18
-
19
- describe CukeModeler do
20
-
21
- it "has a version number" do
22
- expect(CukeModeler::VERSION).not_to be nil
23
- end
24
-
25
- end
@@ -1,23 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../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,83 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../../spec_helper"
2
-
3
-
4
- describe 'Background, Unit', :unit_test => true do
5
-
6
- let(:clazz) { CukeModeler::Background }
7
- let(:background) { clazz.new }
8
-
9
-
10
- describe 'common behavior' do
11
-
12
- it_should_behave_like 'a model'
13
- it_should_behave_like 'a keyworded model'
14
- it_should_behave_like 'a named model'
15
- it_should_behave_like 'a described model'
16
- it_should_behave_like 'a stepped model'
17
- it_should_behave_like 'a sourced model'
18
- it_should_behave_like 'a parsed model'
19
-
20
- end
21
-
22
-
23
- describe 'unique behavior' do
24
-
25
- it 'contains steps' do
26
- steps = [:step_1, :step_2]
27
- everything = steps
28
-
29
- background.steps = steps
30
-
31
- expect(background.children).to match_array(everything)
32
- end
33
-
34
-
35
- describe 'comparison' do
36
-
37
- it 'can gracefully be compared to other types of objects' do
38
- # Some common types of object
39
- [1, 'foo', :bar, [], {}].each do |thing|
40
- expect { background == thing }.to_not raise_error
41
- expect(background == thing).to be false
42
- end
43
- end
44
-
45
- end
46
-
47
-
48
- describe 'background output' do
49
-
50
- context 'from abstract instantiation' do
51
-
52
- let(:background) { clazz.new }
53
-
54
-
55
- it 'can output an empty background' do
56
- expect { background.to_s }.to_not raise_error
57
- end
58
-
59
- it 'can output a background that has only a keyword' do
60
- background.keyword = 'foo'
61
-
62
- expect(background.to_s).to eq('foo:')
63
- end
64
-
65
- it 'can output a background that has only a name' do
66
- background.name = 'a name'
67
-
68
- expect { background.to_s }.to_not raise_error
69
- end
70
-
71
- it 'can output a background that has only a description' do
72
- background.description = 'a description'
73
-
74
- expect { background.to_s }.to_not raise_error
75
- end
76
-
77
- end
78
-
79
- end
80
-
81
- end
82
-
83
- end