Skip to content
Snippets Groups Projects
Commit 6d54ff3c authored by ensiouel's avatar ensiouel
Browse files

Revert "изменена логика работы Set и Get, теперь если встречается...

Revert "изменена логика работы Set и Get, теперь если встречается неинициализированная map, возвращается ошибка"

This reverts commit 8a074859.
parent 05ec3b1f
No related branches found
No related tags found
No related merge requests found
......@@ -3,8 +3,6 @@ package data
import (
"strconv"
"strings"
"git.perx.ru/perxis/perxis-go/pkg/errors"
)
const DefaultFieldDelimiter = "."
......@@ -180,7 +178,7 @@ func set(path []string, data, value any) error {
switch v := data.(type) {
case map[string]interface{}:
if v == nil {
return errors.New("assignment to nil map")
return nil
}
if len(path) == 1 {
......
......@@ -83,7 +83,7 @@ func TestDelete(t *testing.T) {
},
"a.b",
map[string]any{
"a": []any{uninitializedMap, map[string]any{"a": "1", "b": "2"}},
"a": []any{uninitializedMap, map[string]any{"a": "1"}},
},
},
{
......@@ -105,7 +105,7 @@ func TestDelete(t *testing.T) {
"a",
[]any{
uninitializedMap,
map[string]any{"a": 1, "b": "2"},
map[string]any{"b": "2"},
},
},
// Решили что автоматически удалять пустые объекты/слайсы не нужно
......@@ -300,25 +300,27 @@ func TestSet(t *testing.T) {
{"Map value", args{"a", map[string]interface{}{"a": "0"}, map[string]interface{}{"a": "a"}}, map[string]interface{}{"a": map[string]interface{}{"a": "a"}}, assert.NoError},
{"Slice", args{"a.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": "a", "b": "b"}}}, assert.NoError},
{"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.Error},
{"Set the object field for the uninitialized map", args{"a.b", uninitializedMap, "a"}, uninitializedMap, assert.Error},
{"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},
{
"Set object field from first level array with uninitialized map",
"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"}}},
assert.Error,
map[string]any{"a": []any{uninitializedMap, map[string]any{"a": "1", "b": "2"}}},
assert.NoError,
},
{
"Set object field from second level uninitialized map",
"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"}}},
map[string]any{
"a": map[string]any{"a": uninitializedMap, "b": map[string]any{"a": "1", "b": "2"}},
},
assert.NoError,
},
{
"Set object from array with uninitialized map",
"object from array with uninitialized map",
args{"a", []any{uninitializedMap, map[string]any{"b": "2"}}, "1"},
[]any{uninitializedMap, map[string]any{"b": "2"}},
assert.Error,
[]any{uninitializedMap, map[string]any{"a": "1", "b": "2"}},
assert.NoError,
},
}
for _, tt := range tests {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment