class Enumerize::Integrations::RSpec::Matcher
Attributes
attr[RW]
default[RW]
subject[RW]
values[RW]
Public Class Methods
new(attr)
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 7 def initialize(attr) self.attr = attr end
Public Instance Methods
description()
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 33 def description description = "enumerize :#{attr} in: #{quote_values(values)}" description += " with #{default.inspect} as default value" if default description end
failure_message()
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 21 def failure_message message = " expected :#{attr} to allow value#{values.size == 1 ? nil : 's'}: #{quote_values(values)}," message += " but it allows #{quote_values(enumerized_values)} instead" if default && !matches_default_value? message = " expected :#{attr} to have #{default.inspect} as default value," message += " but it sets #{enumerized_default.inspect} instead" end message end
in(*values)
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 11 def in(*values) self.values = values.map(&:to_s).sort self end
matches?(subject)
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 40 def matches?(subject) self.subject = subject matches = true matches &= matches_attributes? matches &= matches_default_value? if default matches end
with_default(default)
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 16 def with_default(default) self.default = default.to_s self end
Private Instance Methods
attributes()
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 68 def attributes subject.class.enumerized_attributes.attributes end
enumerized_default()
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 64 def enumerized_default @enumerized_default ||= attributes[attr.to_s].default_value end
enumerized_values()
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 60 def enumerized_values @enumerized_values ||= attributes[attr.to_s].values.sort end
matches_attributes?()
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 52 def matches_attributes? values == enumerized_values end
matches_default_value?()
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 56 def matches_default_value? default == enumerized_default end
quote_values(values)
click to toggle source
# File lib/enumerize/integrations/rspec/matcher.rb, line 72 def quote_values(values) values.map(&:inspect).join(', ') end