Skip to content
Snippets Groups Projects
Commit 36912612 authored by Alex Petraky's avatar Alex Petraky :basketball_player_tone1: Committed by Pavel Antonov
Browse files

Исправлена ошибка в работе функции ListFields с фильтром, которая приводила к...

Исправлена ошибка в работе функции ListFields с фильтром, которая приводила к возврату неверного списка полей без учета вложенных
parent 73c14d86
No related branches found
No related tags found
No related merge requests found
...@@ -380,7 +380,7 @@ func (f *Field) ListFields(filter ...FieldFilterFunc) []*Field { ...@@ -380,7 +380,7 @@ func (f *Field) ListFields(filter ...FieldFilterFunc) []*Field {
// ListFieldsRecursive возвращает массив всех вложенных полей рекурсивно // ListFieldsRecursive возвращает массив всех вложенных полей рекурсивно
func (f *Field) ListFieldsRecursive(filter ...FieldFilterFunc) []*Field { func (f *Field) ListFieldsRecursive(filter ...FieldFilterFunc) []*Field {
fields := f.ListFields(filter...) fields := f.ListFields(filter...)
for _, fld := range fields { for _, fld := range f.ListFields() {
fields = append(fields, fld.ListFieldsRecursive(filter...)...) fields = append(fields, fld.ListFieldsRecursive(filter...)...)
} }
return fields return fields
......
...@@ -91,6 +91,26 @@ func TestField_ListFieldsRecursive(t *testing.T) { ...@@ -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) { func TestField_CloneWithState(t *testing.T) {
f := Object("a", String()) f := Object("a", String())
fld := f.Clone(false) 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.
Please register or to comment