class EqualJson
Attributes
actual[RW]
currentActualObj[RW]
currentExpectedObj[RW]
currentJsonKey[RW]
expected[RW]
jsonPath[RW]
jsonPathRoot[RW]
Public Class Methods
new(expected)
click to toggle source
# File lib/eq_json.rb, line 11 def initialize(expected) @expected = expected @jsonPathRoot = "$." @jsonPath = @jsonPathRoot @messageGenerator = EqJsonMessageGenerator.new(self) end
Public Instance Methods
description()
click to toggle source
# File lib/eq_json.rb, line 38 def description "Excpect {@expected}" end
failure_message()
click to toggle source
# File lib/eq_json.rb, line 24 def failure_message if RSpec.configuration.methods.include? :json_debug_config if RSpec.configuration.json_debug_config? debugDumper = EqJsonDebugDumper.new(self) debugDumper.dump() end end return @failureMessage end
failure_message_when_negated()
click to toggle source
# File lib/eq_json.rb, line 34 def failure_message_when_negated "Expeced failure_message_when_nagated" end
matches?(actual)
click to toggle source
# File lib/eq_json.rb, line 18 def matches?(actual) @actual = actual matchesObject?(@expected, @actual) end
Private Instance Methods
addKeyToPath(jsonKey)
click to toggle source
# File lib/eq_json.rb, line 131 def addKeyToPath(jsonKey) if @jsonPath[@jsonPath.length-1] != "." @jsonPath << "." end @jsonPath << "#{jsonKey}" end
arrays_match?(expectedObj, actualArray)
click to toggle source
# File lib/eq_json.rb, line 65 def arrays_match?(expectedObj, actualArray) unless actualArray.class == expectedObj.class @failureMessage = @messageGenerator.generateTypeMissMatchFailureMessage() return false; end unless actualArray.length == expectedObj.length @failureMessage = @messageGenerator.generateDifferentSizeArrayMessage(); return false; end arrayUtil = EqualJsonArray.new expectedObj.each do |expectedItem| expectedCount = expectedObj.count do |item| arrayUtil.itemEqual?(expectedItem, item) end actualCount = actualArray.count do |candidate| arrayUtil.itemEqual?(expectedItem, candidate) end if expectedCount != actualCount @failureMessage = @messageGenerator.generateExpectedItemNotFoundInArray(expectedItem, expectedCount, actualCount) return false end end return true end
hashes_match?(expectedObj, actualHash)
click to toggle source
# File lib/eq_json.rb, line 98 def hashes_match?(expectedObj, actualHash) unless actualHash.class == expectedObj.class @failureMessage = @messageGenerator.generateTypeMissMatchFailureMessage() return false; end unless actualHash.length == expectedObj.length @failureMessage = @messageGenerator.generateDifferentKeyMessage(); return false; end expectedObj.each do |expectedKey, expectedValue| @currentJsonKey = expectedKey actualValue = actualHash[expectedKey] unless actualHash.has_key? expectedKey @currentActualObj = actualHash @currentExpectedObj = expectedObj @failureMessage = @messageGenerator.generateDifferentKeyMessage() return false end addKeyToPath(expectedKey) match = matchesObject?(expectedValue, actualHash[expectedKey]) removeKeyFromPath(expectedKey) if match == false return false; end end return true end
matchesObject?(expectedObj, actualObj)
click to toggle source
# File lib/eq_json.rb, line 44 def matchesObject?(expectedObj, actualObj) @currentActualObj = actualObj @currentExpectedObj = expectedObj case actualObj when Array return arrays_match?(expectedObj, actualObj) when Hash return hashes_match?(expectedObj, actualObj) else unless expectedObj == actualObj @failureMessage = @messageGenerator.generateDifferentValueMessage(); return false; end end return true; end
removeKeyFromPath(jsonKey)
click to toggle source
# File lib/eq_json.rb, line 138 def removeKeyFromPath(jsonKey) @jsonPath = @jsonPath[0, @jsonPath.length - "#{jsonKey}".length - 1] if @jsonPath == "$" @jsonPath << "." end end