class Shoulda::Matchers::ActiveRecord::DefineEnumForMatcher
@private
Attributes
attribute_name[R]
options[R]
record[R]
Public Class Methods
new(attribute_name)
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 54 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 79 def description desc = "define :#{attribute_name} as an enum" if options[:expected_enum_values] desc << " with #{options[:expected_enum_values]}" end desc << " and store the value in a column with an integer type" desc end
failure_message()
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 69 def failure_message "Expected #{expectation}" end
Also aliased as: failure_message_for_should
failure_message_when_negated()
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 74 def failure_message_when_negated "Did not expect #{expectation}" end
Also aliased as: failure_message_for_should_not
matches?(subject)
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 64 def matches?(subject) @record = subject enum_defined? && enum_values_match? && column_type_is_integer? end
with(expected_enum_values)
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 59 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 103 def actual_enum_values model.send(attribute_name.to_s.pluralize) end
column()
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 119 def column model.columns_hash[attribute_name.to_s] end
column_type_is_integer?()
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 115 def column_type_is_integer? column.type == :integer end
enum_defined?()
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 107 def enum_defined? model.defined_enums.include?(attribute_name.to_s) end
enum_values_match?()
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 111 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 95 def expectation "#{model.name} to #{description}" end
expected_enum_values()
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 99 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 127 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
model()
click to toggle source
# File lib/shoulda/matchers/active_record/define_enum_for_matcher.rb, line 123 def model record.class end