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