spec/spec_helper.rb in dsl_block-1.0.0 vs spec/spec_helper.rb in dsl_block-2.0.0

- old
+ new

@@ -1,114 +1,114 @@ -require 'simplecov' -SimpleCov.start('test_frameworks') -require 'rspec/autorun' -require 'dsl_block' - -RSpec.configure do |config| - config.order = 'random' -end - -# Due to the nature of these tests, the number of discreete classes involved, and scoping issues -# the memoizaton will occur here instead of the standard rspec 'let' statements. Feel free to -# move these back to standard let statements if the specs can be kept as clean or cleaner - - -# Generic dsl class. Used in the specs as the outermost block -def dsl_class1 - @dsl_class1||= Class.new(DslBlock).tap do |klass| - def klass.name - 'Dsl1' - end - end -end - -# Generic dsl class. Used in the specs as the middle block -def dsl_class2 - @dsl_class2 ||= Class.new(DslBlock).tap do |klass| - def klass.name - 'Dsl2' - end - end -end - -# Generic dsl class. Used in the specs as the innermst block -def dsl_class3 - @dsl_class3 ||= Class.new(DslBlock).tap do |klass| - def klass.name - 'Dsl3' - end - end -end - -# The command the outermost dsl block is usually called by -def dsl_class1_command - dsl_class1.name.underscore.to_sym -end - -# The command the middle dsl block is usually called by -def dsl_class2_command - dsl_class2.name.underscore.to_sym -end - -# The command the innermost dsl block is usually called by -def dsl_class3_command - dsl_class3.name.underscore.to_sym -end - -# Reset all of the classes for a new test -def dsl_reset - @dsl_class1 = nil - @dsl_class2 = nil - @dsl_class3 = nil -end - - - - -# The following are helpers to DRY up the tests. -# The numbers after 'dsl' are references to the order the dsl blocks are nested. - - -# No nested dsl. Block given is run at the ellipsis -# dsl_class1 do -# ... -# end -def dsl1(auto_yield=true, &block) - dsl = dsl_class1.new(&block) - auto_yield ? dsl.yield : dsl -end - -# Nested dsl. Block given is run at the ellipsis -# dsl_class1 do -# dsl_class2 do -# ... -# end -# end -def dsl12(auto_yield=true, propigate12=false,&block) - dsl_class2.add_command_to(dsl_class1, propigate12) - command = dsl_class2_command - dsl = dsl_class1.new do - self.send(command, &block) - end - auto_yield ? dsl.yield : dsl -end - -# Double nested dsl. Block given is run at the ellipsis -# dsl_class1 do -# dsl_class2 do -# dsl_class3 do -# ... -# end -# end -# end -def dsl123(auto_yield=true, propigate12=false, propigate23=false, &block) - dsl_class2.add_command_to(dsl_class1, propigate12) - dsl_class3.add_command_to(dsl_class2, propigate23) - command2 = dsl_class2_command - command3 = dsl_class3_command - dsl = dsl_class1.new do - self.send(command2) do - self.send(command3, &block) - end - end - auto_yield ? dsl.yield : dsl -end +require 'simplecov' +SimpleCov.start('test_frameworks') +require 'rspec/autorun' +require 'dsl_block' + +RSpec.configure do |config| + config.order = 'random' +end + +# Due to the nature of these tests, the number of discreete classes involved, and scoping issues +# the memoizaton will occur here instead of the standard rspec 'let' statements. Feel free to +# move these back to standard let statements if the specs can be kept as clean or cleaner + + +# Generic dsl class. Used in the specs as the outermost block +def dsl_class1 + @dsl_class1||= Class.new(DslBlock).tap do |klass| + def klass.name + 'Dsl1' + end + end +end + +# Generic dsl class. Used in the specs as the middle block +def dsl_class2 + @dsl_class2 ||= Class.new(DslBlock).tap do |klass| + def klass.name + 'Dsl2' + end + end +end + +# Generic dsl class. Used in the specs as the innermst block +def dsl_class3 + @dsl_class3 ||= Class.new(DslBlock).tap do |klass| + def klass.name + 'Dsl3' + end + end +end + +# The command the outermost dsl block is usually called by +def dsl_class1_command + dsl_class1.name.underscore.to_sym +end + +# The command the middle dsl block is usually called by +def dsl_class2_command + dsl_class2.name.underscore.to_sym +end + +# The command the innermost dsl block is usually called by +def dsl_class3_command + dsl_class3.name.underscore.to_sym +end + +# Reset all of the classes for a new test +def dsl_reset + @dsl_class1 = nil + @dsl_class2 = nil + @dsl_class3 = nil +end + + + + +# The following are helpers to DRY up the tests. +# The numbers after 'dsl' are references to the order the dsl blocks are nested. + + +# No nested dsl. Block given is run at the ellipsis +# dsl_class1 do +# ... +# end +def dsl1(auto_yield=true, &block) + dsl = dsl_class1.new(&block) + auto_yield ? dsl.yield : dsl +end + +# Nested dsl. Block given is run at the ellipsis +# dsl_class1 do +# dsl_class2 do +# ... +# end +# end +def dsl12(auto_yield=true, propagate12=false, &block) + dsl_class2.add_command_to(dsl_class1, :propagate => propagate12) + command = dsl_class2_command + dsl = dsl_class1.new do + self.send(command, &block) + end + auto_yield ? dsl.yield : dsl +end + +# Double nested dsl. Block given is run at the ellipsis +# dsl_class1 do +# dsl_class2 do +# dsl_class3 do +# ... +# end +# end +# end +def dsl123(auto_yield=true, propagate12=false, propagate23=false, &block) + dsl_class2.add_command_to(dsl_class1, :propagate => propagate12) + dsl_class3.add_command_to(dsl_class2, :propagate => propagate23) + command2 = dsl_class2_command + command3 = dsl_class3_command + dsl = dsl_class1.new do + self.send(command2) do + self.send(command3, &block) + end + end + auto_yield ? dsl.yield : dsl +end