Class: Enumerize::Integrations::RSpec::Matcher

Inherits:
Object
  • Object
show all
Defined in:
lib/enumerize/integrations/rspec/matcher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attr) ⇒ Matcher

Returns a new instance of Matcher.



7
8
9
# File 'lib/enumerize/integrations/rspec/matcher.rb', line 7

def initialize(attr)
  self.attr = attr
end

Instance Attribute Details

#attrObject

Returns the value of attribute attr.



5
6
7
# File 'lib/enumerize/integrations/rspec/matcher.rb', line 5

def attr
  @attr
end

#defaultObject

Returns the value of attribute default.



5
6
7
# File 'lib/enumerize/integrations/rspec/matcher.rb', line 5

def default
  @default
end

#subjectObject

Returns the value of attribute subject.



5
6
7
# File 'lib/enumerize/integrations/rspec/matcher.rb', line 5

def subject
  @subject
end

#valuesObject

Returns the value of attribute values.



5
6
7
# File 'lib/enumerize/integrations/rspec/matcher.rb', line 5

def values
  @values
end

Instance Method Details

#descriptionObject



33
34
35
36
37
38
# 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_messageObject



21
22
23
24
25
26
27
28
29
30
31
# 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) ⇒ Object



11
12
13
14
# File 'lib/enumerize/integrations/rspec/matcher.rb', line 11

def in(*values)
  self.values = values.map(&:to_s).sort
  self
end

#matches?(subject) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
43
44
45
46
47
48
# 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) ⇒ Object



16
17
18
19
# File 'lib/enumerize/integrations/rspec/matcher.rb', line 16

def with_default(default)
  self.default = default.to_s
  self
end