From 472c3f48f9402dc2ed8909c2f1b22cb11423faf6 Mon Sep 17 00:00:00 2001 From: Johan de Klerk <jdeklerk00@gmail.com> Date: Fri, 6 May 2022 15:09:56 +0200 Subject: [PATCH] Deeper object changes for audit events --- audit/audit.go | 4 ++-- audit/audit_test.go | 46 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 audit/audit_test.go diff --git a/audit/audit.go b/audit/audit.go index 6dff2b1..51bd5ff 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 0000000..b10fce6 --- /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) +} -- GitLab