diff --git a/audit/audit.go b/audit/audit.go index 6dff2b1d2b9a8b7c4c48439203d31b73c41a2577..51bd5ffb8770cf86b4b7c927289e67ebee8e8ccc 100644 --- a/audit/audit.go +++ b/audit/audit.go @@ -40,7 +40,7 @@ func GetChanges(original interface{}, new interface{}) (map[string]interface{}, ChildObjectChanges(changes, change.Path[0], change.Path[1], change.From, change.To) - } else if len(change.Path) == 3 { + } else if len(change.Path) >= 3 { // Array of objects // ["Parcel", "0", "ActualWeight"] // 0 = Object @@ -51,7 +51,7 @@ func GetChanges(original interface{}, new interface{}) (map[string]interface{}, indexString := change.Path[1] if !string_utils.IsNumericString(indexString) { - // Not an array, but an deeper nested object + // Not an array, but a deeper nested object ChildObjectChanges(changes, change.Path[len(change.Path)-2], change.Path[len(change.Path)-1], change.From, change.To) continue } diff --git a/audit/audit_test.go b/audit/audit_test.go new file mode 100644 index 0000000000000000000000000000000000000000..b10fce6717ebfbc9ba78ed55f08eb5f981b81a98 --- /dev/null +++ b/audit/audit_test.go @@ -0,0 +1,46 @@ +package audit + +import ( + "encoding/json" + "fmt" + "testing" +) + +type MockObject struct { + Object interface{} +} + +func TestGetChanges(t *testing.T) { + + object1 := MockObject{ + Object: MockObject{ + Object: MockObject{ + Object: MockObject{ + Object: MockObject{ + Object: "done", + }, + }, + }, + }, + } + + object2 := MockObject{ + Object: MockObject{ + Object: MockObject{ + Object: MockObject{ + Object: MockObject{ + Object: "done1", + }, + }, + }, + }, + } + + changes, err := GetChanges(object1, object2) + if err != nil { + panic(err) + } + + result, _ := json.Marshal(changes) + fmt.Println(result) +}