class ArrayWithKeyMessageGen

Public Class Methods

new(matcher) click to toggle source
# File lib/array_with_key_message_gen.rb, line 5
def initialize(matcher)
  @matcher = matcher
  @colorizer = EqJsonColorizer.new
end

Public Instance Methods

generateDifferentSizeArrays() click to toggle source
# File lib/array_with_key_message_gen.rb, line 26
def generateDifferentSizeArrays()
  objectsNotInExpected = getObjectsNotIn(@matcher.actual, @matcher.expected);
  objectsNotInActual = getObjectsNotIn(@matcher.expected, @matcher.actual);

  jsonErrorInfo = "Array size does not match. Expected #{@matcher.expected.length} actual #{@matcher.actual.length}\n"

  unless objectsNotInExpected.empty?
    jsonErrorInfo << "expected does not contain #{@matcher.key}s #{objectsNotInExpected}\n"
  end

  unless objectsNotInActual.empty?
    jsonErrorInfo << "actual does not contain #{@matcher.key}s #{objectsNotInActual}\n"
  end

  return jsonErrorInfo
end
generateExpectedItemMissingKey(expectedItem) click to toggle source
# File lib/array_with_key_message_gen.rb, line 20
def generateExpectedItemMissingKey(expectedItem)
  return "Tester error expected item does not have key #{@matcher.key}.\n" +
      "Expected item: #{expectedItem.to_json}\n"
end
generateExpectedNotInActual(expectedItem) click to toggle source
# File lib/array_with_key_message_gen.rb, line 15
def generateExpectedNotInActual(expectedItem)
  return "#{@matcher.key} #{expectedItem[@matcher.key]} not found in actual\n" +
      "Expected: #{expectedItem.to_json}\n"
end
generateFailureMessage(expectedItem, eqFailureMessage) click to toggle source
# File lib/array_with_key_message_gen.rb, line 10
def generateFailureMessage(expectedItem, eqFailureMessage)
  return "#{@matcher.key} #{expectedItem[@matcher.key]}\n" +
      eqFailureMessage
end
getObjectsNotIn(array1, array2) click to toggle source
# File lib/array_with_key_message_gen.rb, line 43
def getObjectsNotIn(array1, array2)
  missing = []
  array1.each do |item1|
    item2 = array2.find {|item| item[@matcher.key] == item1[@matcher.key]}
    if item2.nil?
      missing.push(item1[@matcher.key])
    end
  end
  return missing
end