Skip to content
Snippets Groups Projects
Commit 8d640503 authored by Pavel Antonov's avatar Pavel Antonov :asterisk:
Browse files

Merge branch 'fix/PRXS-2766-ListFieldsRecursiveWithFilter' into 'master'

Исправлена ошибка в работе функции ListFields с фильтром, которая приводила к возврату неверного списка полей без учета вложенных

See merge request perxis/perxis-go!313
parents 73c14d86 36912612
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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)
......
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)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment