class Shoulda::Matchers::ActiveRecord::AssociationMatchers::CounterCacheMatcher
@private
def correct_value?
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
def description
def description "counter_cache => #{counter_cache}" end
def initialize(counter_cache, name)
def initialize(counter_cache, name) @counter_cache = counter_cache @name = name @missing_option = '' end
def matches?(subject)
def matches?(subject) self.subject = ModelReflector.new(subject, name) if correct_value? true else self.missing_option = "#{name} should have #{description}" false end end
def normalize_value
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
def option_verifier
def option_verifier @_option_verifier ||= OptionVerifier.new(subject) end