Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions jsonDiff_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ func TestSprintJSONDiff(t *testing.T) {
expectedStringA: []string{
"30aef022f108468def1ab4e9c2f7bc955dd88234b7fa6d6b4fa36584b9373830",
"4e749ff18c8ee678247126d751bb1a6309a22e5e754c8b1d4cac0c7701cd96c0",
"7470cc614de3e68eb00d38f087b208d73822244dca550c3103caa61d7bc16f3f",
"27d4343ebcc5f8354709cecc05b0e4001085233f82fb6424fe176f44f59f1e9a",
"7fb2c228f44a66eb262804bd7c21049dcfbb265173cf24deb4842e521ee983b2",
"93639a34e7bd6dd08cc716ed1715bfd6207cc5f8768525dad30564c6a843f32a",
"d90a8ef41e08f7d80ccee8b2c69d43291933a7eeb57f517469f3a7f14cc1a313",
Expand All @@ -125,7 +125,7 @@ func TestSprintJSONDiff(t *testing.T) {
"c3e49694ce1509a2bf9f6557c4fc643d1efc1ef98dd9a7c18cbe2fb96bdc5109",
},
expectedStringB: []string{
"fb916cbcb8a9c8accb60f436b7ae49d404a6815d81cb67aae9236d41713ecb2c",
"21496320cfc4ca51f19b717d80dc325a4f598b3537b023c5026aee06c227353d",
"8211a861b8ec0d7ce838850e29a9a31a352abcccdb045cb86cd8c8d8721dcd20",
"ca4aa97a9cd8a928eb843ba02d7a1b8eac3014ed92e7d934fa996c6cf829aa05",
"32ed13ed95fd695d63687876616d3a2e395137ef5c09d96cff18458eec33e8f3",
Expand All @@ -146,7 +146,7 @@ func TestSprintJSONDiff(t *testing.T) {
"f71cbcb39804b502c41125d03be6c699baafa15efba8bbb5aef0b111039b2a87",
"fa012aa280e519ccb558663c5728faea94ed020988c83653a796926c35902ec0",
"ef0a5b31ffc0a36df02dcc08898cad0b92857cd1405cad0feefc18d888bf57d0",
"e0236118ff8532288842ad67be5bca9f81b15191ee2efc2eee077406fabf8bbd",
"f8372dde292cf76ca84f07227882caa214ad034e6d3a80e5365af78dc3f21e81",
"c828a0590dbd6e6eefbee21c5855b19a8bff98930f0219816fe6f24c3705c5cb",
"17f1dc518cda544ae5ff4b2479e94d5ef811e542b387608dfe7b44e42937e452",
},
Expand All @@ -155,7 +155,7 @@ func TestSprintJSONDiff(t *testing.T) {
"8fe4e8830eb84cdacd2cbd60f62fc5d50dcecf3a5cc439ea7e24d87d4257c6a8",
"e765848380611cb81996ea9908ade2ee8940c21d72a84fd19ce1d1d6ddfa8e2a",
"001ff4d6bf9821bb067c73812ba5900574dd161d813f10623ba2515fdbed0f88",
"19018c74ffe402eb59202aadc1cab4f5c8171c96ba50f4621ab9d72f3b18914e",
"c9da677f57ff1bf284a8108868c6cf1d9daa2ec3587c8a95b4e4542c00cef5dd",
"0bd78116662eba5d4fa8bbc64f81afbd879fb2e73cd6d85105e1f9bf3a658ae0",
"d11e6a5e5047d70f5e5633650bc4b3fd7a588d126fb785e5ac42b92fbf3e44f6",
},
Expand Down Expand Up @@ -289,7 +289,7 @@ func TestSprintJSONDiff(t *testing.T) {
},
{
expectedStringA: []string{
"7fb2c228f44a66eb262804bd7c21049dcfbb265173cf24deb4842e521ee983b2",
"27d4343ebcc5f8354709cecc05b0e4001085233f82fb6424fe176f44f59f1e9a",
"30aef022f108468def1ab4e9c2f7bc955dd88234b7fa6d6b4fa36584b9373830",
"c3e49694ce1509a2bf9f6557c4fc643d1efc1ef98dd9a7c18cbe2fb96bdc5109",
"7470cc614de3e68eb00d38f087b208d73822244dca550c3103caa61d7bc16f3f",
Expand All @@ -304,7 +304,7 @@ func TestSprintJSONDiff(t *testing.T) {
expectedStringB: []string{
"fb916cbcb8a9c8accb60f436b7ae49d404a6815d81cb67aae9236d41713ecb2c",
"56d4dd69bc7d542a099e6200f2b6d5d024f747e8fc8f493ca9d0a449cc63d1c3",
"d458672f27aa045490d25f180b1e5b81d8d6da09035731127ffb27eca9002942",
"21496320cfc4ca51f19b717d80dc325a4f598b3537b023c5026aee06c227353d",
"8211a861b8ec0d7ce838850e29a9a31a352abcccdb045cb86cd8c8d8721dcd20",
"b54c3ce37beedd7f27b98563770c930887474a00f8471252a95a4fd8e4b8b1fa",
"70e5515e928a51a26c2d78315c677bd841b6118ca4f8f9843b349257a0fafa1e",
Expand All @@ -322,7 +322,7 @@ func TestSprintJSONDiff(t *testing.T) {
"8317e30c64967ec9a7d82332831630315a64ab03496dc11851984693ccc6ef3c",
"507d00b6db2ba429d7bb6fd7cf422e145806761748690714ae4bd7672bb2e41a",
"e61a886b811b80831b9a69293200addfefea3ac0a4fbc401422c32b0815353f7",
"689295d50d283dfb54cef114968a0b5eebd44613ae313bc9d1719e8a18e4c83d",
"897eb927925bc216402ad7206e3a8ac49c834e3958900786667bd714ef1b8f1f",
"2622053f90dead9c5bbad099944c3736877f2d65ce9bb716b782b2467936b27c",
"e94990f2032dca084904454bdd78da23ae7de904aea3620b4b6e3a0b0ff85f96",
"52c0d440ad1a7658e150f9fd60328042f32cff5695290d00af86b915f814d55b",
Expand All @@ -338,7 +338,7 @@ func TestSprintJSONDiff(t *testing.T) {
expectedStringB: []string{
"82ef5e26330856df883b55e13725a1b71c56f787ab8b8e1d47d6df69ddf7121d",
"275e4bec238e61b624affaf51ece1beaa5e1d3cb08d875a501e6f0a32e6b6474",
"5b43d1d31702c9e74b93420fe30a3e64988edeb18b5aa7c6030108ab5ca43ccc",
"22fb469d471af3159f3a84a94179b36b27af4eb51bcbc07dec399d4dd502d624",
"7112d7ed41c984911e7716bf7791972e4d4712e59578a9a6efe565632c162076",
"cf358de4037ee1daf5a36d4b6b89ded7aced41b6ac1a8ec0bcc9e063607eb194",
"78970da2cca7e3dfa6c46b4136603259b56eccc3083d51cd2bc190648e7f9dc1",
Expand All @@ -358,20 +358,20 @@ func TestSprintJSONDiff(t *testing.T) {
"ef4dd42bb9dc629bbfade57743e72663c9a5d236c0e92cb4ce8c80e0d1304350",
"ef0a5b31ffc0a36df02dcc08898cad0b92857cd1405cad0feefc18d888bf57d0",
"f71cbcb39804b502c41125d03be6c699baafa15efba8bbb5aef0b111039b2a87",
"e0236118ff8532288842ad67be5bca9f81b15191ee2efc2eee077406fabf8bbd",
"f8372dde292cf76ca84f07227882caa214ad034e6d3a80e5365af78dc3f21e81",
"17f1dc518cda544ae5ff4b2479e94d5ef811e542b387608dfe7b44e42937e452",
},
expectedStringB: []string{
"8fe4e8830eb84cdacd2cbd60f62fc5d50dcecf3a5cc439ea7e24d87d4257c6a8",
"e765848380611cb81996ea9908ade2ee8940c21d72a84fd19ce1d1d6ddfa8e2a",
"d79b35acf01b0f5138699ff1cc49ea89373b8ebf7e96118b839586a28c28bbee",
"001ff4d6bf9821bb067c73812ba5900574dd161d813f10623ba2515fdbed0f88",
"19018c74ffe402eb59202aadc1cab4f5c8171c96ba50f4621ab9d72f3b18914e",
"c9da677f57ff1bf284a8108868c6cf1d9daa2ec3587c8a95b4e4542c00cef5dd",
"d11e6a5e5047d70f5e5633650bc4b3fd7a588d126fb785e5ac42b92fbf3e44f6",
},
json1: "{\"books\":[{\"title\":\"Book A\",\"author\":{\"name\":\"Author 1\"}},{\"title\":\"Book B\",\"author\":{\"name\":\"Author 2\"}}]}",
json2: "{\"books\":[{\"title\":\"Book B\",\"author\":{\"name\":\"Author 2\"}},{\"title\":\"Book A\",\"author\":{\"name\":\"Author 1\"}}]}",
name: "different arrays with nested objects",
name: "different arrays with nested objects2",
},
{
expectedStringA: []string{
Expand Down Expand Up @@ -654,7 +654,7 @@ func TestSprintJSONDiff(t *testing.T) {
expectedStringA: []string{
"912c9262d67b66c88213a4852e320d9b8510756699fe6ee449ee88dbf8426194",
"7276fdfc263d1cc56e82703e3010ee8537faa23d8ad824e6920c96b30a47da04",
"b5569dffab784f8cd870abad4b63dd22ba0c2b8b9859bfed3c480a9aed116401",
"225753634629e212ae856780142e39ba2a2a8607e1f7ef352ff1527ce71d5954",
"5a1757013adc054b5c39f94fa645d620089a217630352a411c9dbee947a71763",
"a7e01095237d895cb826f0253e0d826f1c9f08ec8c06872da68e08af06a7bfa7",
"8c716c74148982037debf428df67b70b4b87c256760c3ece8e05c26b3b86cb32",
Expand All @@ -665,7 +665,7 @@ func TestSprintJSONDiff(t *testing.T) {
expectedStringB: []string{
"d4d0e98483b84858b909008fc80feb15ea1be34f3d8f08a4fba2256d3297cda4",
"75c41d6b1061be75ba87dfa384bebf58f157b135cb30c2138804811188a150aa",
"49a5be54a87c48e0f54e7d4b977d108e7eba92a65f49cd59955e4d20b7145ec0",
"dca54c9e5cb4d08318a33d0067d071d6a6e63e350db7beab7fbfe0f8f761b8be",
"875ba3013d34c16df7151d3b8df14e72a02aa69183051a48879dc1ae4b1b5b4b",
"8d682e6444c028e9069ce1aafba947e5200bbb1d5bdb670bd7ca01db01536b9d",
"3edb3572889e9ca3ba8fdcbcff05ed25daa8197d4f271022e1232eb6a89ed2b2",
Expand Down
36 changes: 26 additions & 10 deletions jsondiff.go
Original file line number Diff line number Diff line change
Expand Up @@ -824,8 +824,16 @@ func compareAndColorizeMaps(a, b map[string]interface{}, indent string, red, gre
expectedOutput.WriteString("{\n") // Start the expected output with an opening brace and newline.
actualOutput.WriteString("{\n") // Start the actual output with an opening brace and newline.

// Iterate over each key-value pair in the first map.
for key, aValue := range a {
// Get all keys and sort them
keys := make([]string, 0, len(a))
Comment thread
Hermione2408 marked this conversation as resolved.
for key := range a {
keys = append(keys, key)
}
sort.Strings(keys)

// Iterate over each key-value pair in the first map in sorted order
for _, key := range keys {
aValue := a[key]
bValue, bHasKey := b[key] // Get the corresponding value from the second map and check if the key exists.
if aValue == nil && !bHasKey {
actualOutput.WriteString(fmt.Sprintf("%s\"%s\": \"Unsupported Type\",\n", indent+" ", red(key)))
Expand All @@ -843,16 +851,24 @@ func compareAndColorizeMaps(a, b map[string]interface{}, indent string, red, gre
compare(key, aValue, bValue, indent+" ", &expectedOutput, &actualOutput, red, green, jsonPath, noise)
}

// Iterate over each key-value pair in the second map.
for key, bValue := range b {
if _, aHasKey := a[key]; !aHasKey { // If the key does not exist in the first map.
jsonPath = jsonPath + "." + key
// Get all keys from second map that aren't in first map
extraKeys := make([]string, 0)
for key := range b {
if _, exists := a[key]; !exists {
extraKeys = append(extraKeys, key)
}
}
sort.Strings(extraKeys)

// Iterate over each key-value pair in the second map that wasn't in the first map
for _, key := range extraKeys {
bValue := b[key]
jsonPath = jsonPath + "." + key

isNoised := checkNoise(jsonPath, noise)
isNoised := checkNoise(jsonPath, noise)

if !isNoised {
writeKeyValuePair(&actualOutput, green(key), bValue, indent+" ", green) // Write the key-value pair with green color.
}
if !isNoised {
writeKeyValuePair(&actualOutput, green(key), bValue, indent+" ", green) // Write the key-value pair with green color.
}
}

Expand Down
Loading