From c3b4c61c14e92e3ae2cfb1483f358a161bc15b22 Mon Sep 17 00:00:00 2001 From: ensiouel <ensiouel@gmail.com> Date: Thu, 18 Jan 2024 09:55:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/data/data_test.go | 52 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/pkg/data/data_test.go b/pkg/data/data_test.go index b26a525d..4a54ff0a 100644 --- a/pkg/data/data_test.go +++ b/pkg/data/data_test.go @@ -76,6 +76,38 @@ func TestDelete(t *testing.T) { "a.b", uninitializedMap, }, + { + "object field from first level array with uninitialized map", + map[string]any{ + "a": []any{uninitializedMap, map[string]any{"a": "1", "b": "2"}}, + }, + "a.b", + map[string]any{ + "a": []any{uninitializedMap, map[string]any{"a": "1"}}, + }, + }, + { + "object field from second level uninitialized map", + map[string]any{ + "a": map[string]any{"a": uninitializedMap, "b": map[string]any{"a": "1", "b": "2"}}, + }, + "a.b.a", + map[string]any{ + "a": map[string]any{"a": uninitializedMap, "b": map[string]any{"b": "2"}}, + }, + }, + { + "object from array with uninitialized map", + []any{ + uninitializedMap, + map[string]any{"a": 1, "b": "2"}, + }, + "a", + []any{ + uninitializedMap, + map[string]any{"b": "2"}, + }, + }, // Решили что автоматически удалять пустые объекты/слайсы не нужно //{ // "empty object", @@ -270,6 +302,26 @@ func TestSet(t *testing.T) { {"Slice", args{"a.0.a", map[string]interface{}{"a": []any{map[string]any{"a": "0"}, map[string]any{"a": "0", "b": "b"}}}, "a"}, map[string]interface{}{"a": []any{map[string]any{"a": "a"}, map[string]any{"a": "0", "b": "b"}}}, assert.NoError}, {"Set the object for the uninitialized map", args{"a", uninitializedMap, "a"}, uninitializedMap, assert.NoError}, {"Set the object field for the uninitialized map", args{"a.b", uninitializedMap, "a"}, uninitializedMap, assert.NoError}, + { + "object field from first level array with uninitialized map", + args{"a.b", map[string]any{"a": []any{uninitializedMap, map[string]any{"a": "1"}}}, "2"}, + map[string]any{"a": []any{uninitializedMap, map[string]any{"a": "1", "b": "2"}}}, + assert.NoError, + }, + { + "object field from second level uninitialized map", + args{"a.b.a", map[string]any{"a": map[string]any{"a": uninitializedMap, "b": map[string]any{"b": "2"}}}, "1"}, + map[string]any{ + "a": map[string]any{"a": uninitializedMap, "b": map[string]any{"a": "1", "b": "2"}}, + }, + assert.NoError, + }, + { + "object from array with uninitialized map", + args{"a", []any{uninitializedMap, map[string]any{"b": "2"}}, "1"}, + []any{uninitializedMap, map[string]any{"a": "1", "b": "2"}}, + assert.NoError, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { -- GitLab