module Enumeration::AssertMacros::MacroMethods
Public Instance Methods
have_enum(name, *args)
click to toggle source
# File lib/enumeration/assert_macros.rb, line 16 def have_enum(name, *args) values = [*args].flatten type = nil if values.first.kind_of?(::Hash) values = values.first type = 'map' elsif !values.empty? type = 'list' end called_from = caller.first macro_name = "have the" macro_name += " #{type}" if type macro_name += " enum '#{name}'" macro_name += " with #{values.inspect} values" if !values.empty? Assert::Macro.new(macro_name) do should have_accessor name, [called_from] should have_class_method "#{name}_collection", [called_from] if type == 'map' should have_class_method name, [called_from] end if !values.empty? should "know its '#{name}' enum values", called_from do assert_equal values, subject.class.send("#{name}_collection") end if type == 'map' should "map the '#{name}' enum values at the class level", called_from do values.each {|k,v| assert_equal v, subject.class.send(name, k)} end end end end end