class Shoulda::Matchers::ActiveRecord::DefineEnumForMatcher

@private

Attributes

attribute_name[R]
model[R]
options[R]

Public Class Methods

new(attribute_name) click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 55
def initialize(attribute_name)
  @attribute_name = attribute_name
  @options = {}
end

Public Instance Methods

description() click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 80
def description
  desc = "define :#{attribute_name} as an enum"

  if options[:expected_enum_values]
    desc << " with #{options[:expected_enum_values]}"
  end

  desc
end
failure_message() click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 70
def failure_message
  "Expected #{expectation}"
end
Also aliased as: failure_message_for_should
failure_message_for_should()
Alias for: failure_message
failure_message_for_should_not()
failure_message_when_negated() click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 75
def failure_message_when_negated
  "Did not expect #{expectation}"
end
matches?(subject) click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 65
def matches?(subject)
  @model = subject
  enum_defined? && enum_values_match?
end
with(expected_enum_values) click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 60
def with(expected_enum_values)
  options[:expected_enum_values] = expected_enum_values
  self
end

Protected Instance Methods

actual_enum_values() click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 106
def actual_enum_values
  model.class.send(enum_method)
end
enum_defined?() click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 110
def enum_defined?
  model.class.respond_to?(enum_method)
end
enum_method() click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 102
def enum_method
  attribute_name.to_s.pluralize
end
enum_values_match?() click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 114
def enum_values_match?
  expected_enum_values.empty? || actual_enum_values == expected_enum_values
end
expectation() click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 94
def expectation
  "#{model.class.name} to #{description}"
end
expected_enum_values() click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 98
def expected_enum_values
  hashify(options[:expected_enum_values]).with_indifferent_access
end
hashify(value) click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 118
def hashify(value)
  if value.nil?
    return {}
  end

  if value.is_a?(Array)
    new_value = {}

    value.each_with_index do |v, i|
      new_value[v] = i
    end

    new_value
  else
    value
  end
end