From 4eca59f0313e05967c40a0e41639f805126f8035 Mon Sep 17 00:00:00 2001 From: ensiouel <ensiouel@gmail.com> Date: Tue, 23 Jan 2024 11:33:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20Item=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=20DeleteItemData?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/items/item.go | 10 ++++++++++ pkg/items/item_test.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/pkg/items/item.go b/pkg/items/item.go index 7c34d2bb..fdf491ed 100644 --- a/pkg/items/item.go +++ b/pkg/items/item.go @@ -398,6 +398,16 @@ func (i *Item) Get(field string) (any, error) { return i.getItemData(field) } +// DeleteItemData удаляет значение поля Data +func (i *Item) DeleteItemData(field string) error { + // Если data == nil, то нет необходимости выполнять удаление + if i.Data == nil { + return nil + } + + return data.Delete(field, i.Data) +} + // GetSystemField возвращает описание поля для системных аттрибутов Item func GetSystemField(fld string) (*field.Field, error) { switch fld { diff --git a/pkg/items/item_test.go b/pkg/items/item_test.go index fb54fc50..4ce46de9 100644 --- a/pkg/items/item_test.go +++ b/pkg/items/item_test.go @@ -25,6 +25,42 @@ func TestItem_Set(t *testing.T) { } +func TestItem_DeleteItemData(t *testing.T) { + tests := []struct { + name string + item *Item + field string + want map[string]any + wantErr assert.ErrorAssertionFunc + }{ + { + name: "Simple", + item: &Item{Data: map[string]any{"a": "b", "c": "d"}}, + field: "a", + want: map[string]any{"c": "d"}, + wantErr: assert.NoError, + }, + { + name: "Item data is nil", + item: &Item{Data: nil}, + field: "a", + want: nil, + wantErr: assert.NoError, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + err := tc.item.DeleteItemData(tc.field) + assert.NoError(t, err) + if !tc.wantErr(t, err) { + return + } + assert.Equal(t, tc.want, tc.item.Data) + }) + } +} + func TestGetField(t *testing.T) { sch := schema.New( "a", field.String(), -- GitLab