From 5da33b0b3b1342527dd57dc93ce9a4ba902afdd1 Mon Sep 17 00:00:00 2001
From: ensiouel <ensiouel@gmail.com>
Date: Mon, 22 Jan 2024 13:14:01 +0300
Subject: [PATCH] =?UTF-8?q?=D0=B2=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?=
 =?UTF-8?q?=D1=8E=20Set=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?=
 =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20dat?=
 =?UTF-8?q?a=20=D0=BD=D0=B0=20nil?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pkg/data/data.go      | 6 ++++++
 pkg/data/data_test.go | 6 ++++++
 2 files changed, 12 insertions(+)

diff --git a/pkg/data/data.go b/pkg/data/data.go
index c94a7e25..2e016a6f 100644
--- a/pkg/data/data.go
+++ b/pkg/data/data.go
@@ -9,6 +9,8 @@ import (
 
 const DefaultFieldDelimiter = "."
 
+var ErrDataIsNil = errors.New("data is nil")
+
 type DeleteValueType struct{}
 
 var DeleteValue DeleteValueType
@@ -169,6 +171,10 @@ func getPath(field string, delim ...string) []string {
 }
 
 func Set(field string, data, value any, delim ...string) error {
+	if data == nil {
+		return ErrDataIsNil
+	}
+
 	return set(getPath(field, delim...), data, value)
 }
 
diff --git a/pkg/data/data_test.go b/pkg/data/data_test.go
index 5427dea8..a77df7ad 100644
--- a/pkg/data/data_test.go
+++ b/pkg/data/data_test.go
@@ -316,6 +316,12 @@ func TestSet(t *testing.T) {
 			[]any{(map[string]any)(nil), map[string]any{"b": "2"}},
 			assert.Error,
 		},
+		{
+			"Set object to nil data",
+			args{"a", nil, "1"},
+			nil,
+			assert.Error,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-- 
GitLab