class EqualJsonArrayWithKey

Attributes

actual[RW]
expected[RW]
key[RW]

Public Class Methods

new(expected, key) click to toggle source
# File lib/eq_json_array_with_key.rb, line 11
def initialize(expected, key)
  unless key.is_a? Symbol
    raise "Key should be a symbol"
  end
  @expected = expected
  @key = key
  @messageGenerator = ArrayWithKeyMessageGen.new(self)
end

Public Instance Methods

failure_message() click to toggle source
# File lib/eq_json_array_with_key.rb, line 49
def failure_message
  return @failureMessage
end
matches?(actual) click to toggle source
# File lib/eq_json_array_with_key.rb, line 20
def matches?(actual)
  @actual = actual

  unless actual.length == expected.length
    @failureMessage = @messageGenerator.generateDifferentSizeArrays()
    return false
  end

  @expected.each() do |expectedItem|
    if expectedItem[@key].nil?
      @failureMessage = @messageGenerator.generateExpectedItemMissingKey(expectedItem)
      return false
    end

    actualItem = actual.find {|item| item[@key] == expectedItem[@key]}
    if actualItem.nil?
      @failureMessage = @messageGenerator.generateExpectedNotInActual(expectedItem)
      return false;
    end
    @eqJsonMatcher=EqualJson.new(expectedItem)
    if !@eqJsonMatcher.matches?(actualItem)
      @failureMessage = @messageGenerator.generateFailureMessage(expectedItem, @eqJsonMatcher.failure_message)
      return false;
    end
  end

  return true;
end