class Object

Public Instance Methods

diff_message(expected) click to toggle source
# File lib/rspec/hive/matchers.rb, line 80
def diff_message(expected)
  "Diff: #{differ.diff_as_object(@diffable_actual, expected)}"
end
differ() click to toggle source
# File lib/rspec/hive/matchers.rb, line 84
def differ
  RSpec::Support::Differ.new(
    object_preparer: ->(object) { surface_descriptions_in(object) },
    color: RSpec::Matchers.configuration.color?
  )
end
ordered_result_set_match?(actual, expected_row, expected_transformer, actual_transformer, diffable_transformer) click to toggle source
# File lib/rspec/hive/matchers.rb, line 67
def ordered_result_set_match?(actual, expected_row, expected_transformer, actual_transformer, diffable_transformer)
  @diffable_actual << diffable_transformer.call(actual)
  values_match?(expected_transformer.call(expected_row), actual_transformer.call(actual))
end
result_set_match?( actual, expected_row, expected_transformer: ->(expected) { expected } click to toggle source
# File lib/rspec/hive/matchers.rb, line 43
def result_set_match?(
  actual, expected_row,
  expected_transformer: ->(expected) { expected },
  actual_transformer: ->(candidate) { candidate },
  diffable_transformer: actual_transformer
)
  if @unordered
    unordered_result_set_match?(expected_row, expected_transformer, actual_transformer, diffable_transformer)
  else
    ordered_result_set_match?(actual, expected_row, expected_transformer, actual_transformer, diffable_transformer)
  end
end
surface_descriptions_in(item) click to toggle source

Copied and adapted from RSpec::Matchers::Composable rubocop:disable Style/CaseEquality

# File lib/rspec/hive/matchers.rb, line 93
def surface_descriptions_in(item)
  if RSpec::Matchers.is_a_describable_matcher?(item)
    RSpec::Matchers::Composable::DescribableItem.new(item)
  elsif Hash === item
    Hash[surface_descriptions_in(item.to_a.sort)]
  elsif Struct === item || unreadable_io?(item)
    RSpec::Support::ObjectFormatter.format(item)
  elsif should_enumerate?(item)
    item.map { |subitem| surface_descriptions_in(subitem) }
  else
    item
  end
end
unordered_result_set_match?(expected_row, expected_transformer, actual_transformer, diffable_transformer) click to toggle source
# File lib/rspec/hive/matchers.rb, line 56
def unordered_result_set_match?(expected_row, expected_transformer, actual_transformer, diffable_transformer)
  found_index = @actual.find_index do |candidate|
    values_match?(expected_transformer.call(expected_row), actual_transformer.call(candidate))
  end
  return false unless found_index
  found = @actual[found_index]
  @actual.delete_at(found_index)
  @diffable_actual << diffable_transformer.call(found)
  true
end