Skip to content
37 changes: 33 additions & 4 deletions jsonDiff_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ func TestSprintJSONDiff(t *testing.T) {
json2 string
expectedStringA []string
expectedStringB []string
isNoised bool
noise map[string][]string
}{
{
expectedStringA: []string{
Expand Down Expand Up @@ -146,6 +148,7 @@ func TestSprintJSONDiff(t *testing.T) {
"ef0a5b31ffc0a36df02dcc08898cad0b92857cd1405cad0feefc18d888bf57d0",
"e0236118ff8532288842ad67be5bca9f81b15191ee2efc2eee077406fabf8bbd",
"c828a0590dbd6e6eefbee21c5855b19a8bff98930f0219816fe6f24c3705c5cb",
"17f1dc518cda544ae5ff4b2479e94d5ef811e542b387608dfe7b44e42937e452",
},
expectedStringB: []string{
"d79b35acf01b0f5138699ff1cc49ea89373b8ebf7e96118b839586a28c28bbee",
Expand All @@ -154,6 +157,7 @@ func TestSprintJSONDiff(t *testing.T) {
"001ff4d6bf9821bb067c73812ba5900574dd161d813f10623ba2515fdbed0f88",
"19018c74ffe402eb59202aadc1cab4f5c8171c96ba50f4621ab9d72f3b18914e",
"0bd78116662eba5d4fa8bbc64f81afbd879fb2e73cd6d85105e1f9bf3a658ae0",
"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\"}}]}",
Expand Down Expand Up @@ -612,11 +616,12 @@ func TestSprintJSONDiff(t *testing.T) {
},
{
expectedStringA: []string{
"d6ce134d7dd3367ee6201869c1ee642f065b54f200a8023d5ccd6df6417828d5",
"cc1d6ab9fd7c8cf07fbf85a1710eab59ebc861f4da193cafbdcfe7784ebf22d2",
"0e3cca6969dcc5294cf90792b2cb5253adc51b37ab5b8a17f25dfeef51b798ab",
"59fb6a700fb710db7d05e59ca4425b21de4fc754ab8ea1a4ff1ac05d1e70d478",
},
expectedStringB: []string{
"094a72abe8018edc3aa6dabd237f5f405c4d061eb1bba76f14b6a862b818d9d4",
"2e2609aeccc418eaf137d9dd04af5de8805e8c031bfd1f7b6d1327dd1db41d1b",
"2e2609aeccc418eaf137d9dd04af5de8805e8c031bfd1f7b6d1327dd1db41d1b",
},
json1: "{\"animal\":{\"name\":\"Cat\",\"attributes\":{\"color\":\"black\",\"age\":5}}}",
json2: "{\"animal\":{\"name\":\"Cat\",\"characteristics\":{\"color\":\"black\",\"age\":5}}}",
Expand Down Expand Up @@ -669,11 +674,35 @@ func TestSprintJSONDiff(t *testing.T) {
json2: "{\"zoo\":{\"animals\":[{\"species\":\"mammal\",\"name\":\"Elephant\",\"age\":10},{\"type\":\"bird\",\"name\":\"Parrot\",\"age\":2}]}}",
name: "random key change in deeply nested mixed structures",
},
{
expectedStringA: []string{
"29a03b5d51ae5ae3b35affbc646f08b8d77d4c34a001945f125dda0b9d581a7b",
},
expectedStringB: []string{
"aa041336dda91711129ab5d24f1e19d636e819452252ab20da1bf072b21c75f4",
},
json1: "{\"key1\": [\"a\", \"b\", \"c\"], \"key2\": \"value1\"}",
json2: "{\"key1\": [\"a\", \"b\", \"d\"], \"keyX\": \"value1\"}",
name: "random key transformation in a map with nested array key changes labeled as noise",
isNoised: true,
noise: map[string][]string{
"key1": {},
},
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
resp, err := CompareJSON([]byte(tt.json1), []byte(tt.json2), map[string][]string{}, false)

var resp Diff
var err error

if tt.isNoised {
resp, err = CompareJSON([]byte(tt.json1), []byte(tt.json2), tt.noise, false)
} else {
resp, err = CompareJSON([]byte(tt.json1), []byte(tt.json2), map[string][]string{}, false)
}

if err != nil {
fmt.Println(err.Error())
fmt.Println(resp)
Expand Down
Loading