class Shoulda::Matchers::ActiveRecord::AssociationMatchers::CounterCacheMatcher
@private
Attributes
Public Class Methods
Source
# File lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb, line 9 def initialize(counter_cache, name) @counter_cache = counter_cache @name = name @missing_option = '' end
Public Instance Methods
Source
# File lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb, line 15 def description "counter_cache => #{counter_cache}" end
Source
# File lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb, line 19 def matches?(subject) self.subject = ModelReflector.new(subject, name) if correct_value? true else self.missing_option = "#{name} should have #{description}" false end end
Protected Instance Methods
Source
# File lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb, line 34 def correct_value? expected = normalize_value if expected.is_a?(Hash) option_verifier.correct_for_hash?( :counter_cache, expected, ) else option_verifier.correct_for_string?( :counter_cache, expected, ) end end
Source
# File lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb, line 54 def normalize_value if Rails::VERSION::STRING >= '7.2' case counter_cache when true { active: true, column: nil } when String, Symbol { active: true, column: counter_cache.to_s } when Hash { active: true, column: nil }.merge!(counter_cache) else raise ArgumentError, 'Invalid counter_cache option' end else counter_cache end end
Source
# File lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb, line 50 def option_verifier @_option_verifier ||= OptionVerifier.new(subject) end