class RSpec::Mocks::ArgumentMatchers::BaseHashMatcher

@private

Public Class Methods

new(expected) click to toggle source
# File lib/rspec/mocks/argument_matchers.rb, line 179
def initialize(expected)
  @expected = expected
end

Public Instance Methods

===(predicate, actual) click to toggle source
# File lib/rspec/mocks/argument_matchers.rb, line 183
def ===(predicate, actual)
  @expected.__send__(predicate) do |k, v|
    actual.key?(k) && Support::FuzzyMatcher.values_match?(v, actual[k])
  end
rescue NoMethodError
  false
end
description(name) click to toggle source
# File lib/rspec/mocks/argument_matchers.rb, line 191
def description(name)
  "#{name}(#{formatted_expected_hash.inspect.sub(/^\{/, "").sub(/\}$/, "")})"
end

Private Instance Methods

formatted_expected_hash() click to toggle source
# File lib/rspec/mocks/argument_matchers.rb, line 197
def formatted_expected_hash
  Hash[
    @expected.map do |k, v|
      k = RSpec::Support.rspec_description_for_object(k)
      v = RSpec::Support.rspec_description_for_object(v)

      [k, v]
    end
  ]
end