def include(*expected)
Matcher.new :include, *expected do |*_expected|
match do |actual|
_expected.all? do |expected|
if comparing_hash_values?(actual, expected)
expected.all? {|k,v| actual[k] == v}
elsif comparing_hash_keys?(actual, expected)
actual.has_key?(expected)
else
actual.include?(expected)
end
end
end
def comparing_hash_keys?(actual, expected)
actual.is_a?(Hash) && !expected.is_a?(Hash)
end
def comparing_hash_values?(actual, expected)
actual.is_a?(Hash) && expected.is_a?(Hash)
end
end
end