Sha256: ccd35ec55622c3e727725b15ec97b2140370cc0a2cc770aab454d900e5b7c112

Contents?: true

Size: 698 Bytes

Versions: 1

Compression:

Stored size: 698 Bytes

Contents

require 'rspec/expectations'

RSpec::Matchers.define :have_attributes do |expected|
  match do |actual|
    result = true
    expected.each do |key, value|
      result = false unless actual.send(key) == value
    end

    result
  end

  failure_message do |actual|
    wrong_fields = {}
    expected.each do |key, value|
      wrong_fields[key] = {
        actual: actual.send(key),
        expected: value
      } unless actual.send(key) == value
    end

    wrong_fields.inject("In #{actual.class.name} ") do |message, wrong_field|
      key, value = wrong_field
      message << "expected that #{key} would be #{value[:expected]}, but was #{value[:actual]}\n"
      message
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sandi_meter-1.2.0 spec/support/attr_matcher.rb