From 3691261249d6cb85e07df3a983e095d5bc2627e8 Mon Sep 17 00:00:00 2001 From: Alex Petraky <petraky@perx.ru> Date: Wed, 14 Aug 2024 18:45:37 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B2=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B5=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20ListFields=20=D1=81=20=D1=84?= =?UTF-8?q?=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D0=BE=D0=BC,=20=D0=BA=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B0=D1=8F=20=D0=BF=D1=80=D0=B8=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=D0=B8=D0=BB=D0=B0=20=D0=BA=20=D0=B2=D0=BE=D0=B7=D0=B2?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D1=83=20=D0=BD=D0=B5=D0=B2=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20=D0=B1=D0=B5=D0=B7=20=D1=83?= =?UTF-8?q?=D1=87=D0=B5=D1=82=D0=B0=20=D0=B2=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/schema/field/field.go | 2 +- pkg/schema/field/field_test.go | 20 ++++++++++++++++++++ pkg/schema/schema_test.go | 18 ++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 pkg/schema/schema_test.go diff --git a/pkg/schema/field/field.go b/pkg/schema/field/field.go index 4d2a6771..2645730f 100644 --- a/pkg/schema/field/field.go +++ b/pkg/schema/field/field.go @@ -380,7 +380,7 @@ func (f *Field) ListFields(filter ...FieldFilterFunc) []*Field { // ListFieldsRecursive возвращает массив всех вложенных полей рекурсивно func (f *Field) ListFieldsRecursive(filter ...FieldFilterFunc) []*Field { fields := f.ListFields(filter...) - for _, fld := range fields { + for _, fld := range f.ListFields() { fields = append(fields, fld.ListFieldsRecursive(filter...)...) } return fields diff --git a/pkg/schema/field/field_test.go b/pkg/schema/field/field_test.go index d27d74bb..cb0458ed 100644 --- a/pkg/schema/field/field_test.go +++ b/pkg/schema/field/field_test.go @@ -91,6 +91,26 @@ func TestField_ListFieldsRecursive(t *testing.T) { } } +func TestField_ListFieldsRecursive_WithFilter(t *testing.T) { + sch := Object( + "f1", Object( + "b", Object( + "c", String().SetSingleLocale(true), + ), + ), + "f2", Object( + "b", Object( + "c", String().SetSingleLocale(true), + ), + ).SetSingleLocale(true), + ) + + sch.EnableState() + + fields := sch.ListFieldsRecursive(func(f *Field) bool { return f.SingleLocale == true }) + assert.Len(t, fields, 3) +} + func TestField_CloneWithState(t *testing.T) { f := Object("a", String()) fld := f.Clone(false) diff --git a/pkg/schema/schema_test.go b/pkg/schema/schema_test.go new file mode 100644 index 00000000..dbedf48f --- /dev/null +++ b/pkg/schema/schema_test.go @@ -0,0 +1,18 @@ +package schema + +import ( + "testing" + + "git.perx.ru/perxis/perxis-go/pkg/schema/field" + "github.com/stretchr/testify/assert" +) + +func TestSchema_Clone(t *testing.T) { + f := New("a", field.String()) + f.ClearState() + fld := f.Clone(false) + assert.Nil(t, fld.State) + f.EnableState() + fld = f.Clone(false) + assert.NotNil(t, fld.State) +} -- GitLab