diff --git a/pkg/files/field_test.go b/pkg/files/field_test.go new file mode 100644 index 0000000000000000000000000000000000000000..7b6317309654c9027ca0b373b2362b7d3aad54af --- /dev/null +++ b/pkg/files/field_test.go @@ -0,0 +1,34 @@ +package files + +import ( + "testing" + + "git.perx.ru/perxis/perxis-go/pkg/schema" + "git.perx.ru/perxis/perxis-go/pkg/schema/field" + "github.com/stretchr/testify/assert" +) + +func TestFileField_Get(t *testing.T) { + sch := schema.New( + "a", field.String(), + "b", field.Object( + "file", Field(), + ), + "file", Field(), + ) + sch.ClearState() + + assert.Equal(t, field.String(), sch.GetField("file.id")) + assert.Equal(t, field.String(), sch.GetField("file.name")) + assert.Equal(t, field.String(), sch.GetField("file.mimeType")) + assert.Equal(t, field.String(), sch.GetField("file.url")) + assert.Equal(t, field.String(), sch.GetField("file.key")) + assert.Equal(t, field.Number(field.NumberFormatInt), sch.GetField("file.size")) + + assert.Equal(t, field.String(), sch.GetField("b.file.id")) + assert.Equal(t, field.String(), sch.GetField("b.file.name")) + assert.Equal(t, field.String(), sch.GetField("b.file.mimeType")) + assert.Equal(t, field.String(), sch.GetField("b.file.url")) + assert.Equal(t, field.String(), sch.GetField("b.file.key")) + assert.Equal(t, field.Number(field.NumberFormatInt), sch.GetField("b.file.size")) +} diff --git a/pkg/references/field.go b/pkg/references/field.go index 905c2d43a1b05f5e19b00a99fcc8fadddd718b61..f80e7b5a564efe81df2969fb35f14d69fd23a1c8 100644 --- a/pkg/references/field.go +++ b/pkg/references/field.go @@ -26,9 +26,22 @@ func (p ReferenceParameters) Clone(reset bool) field.Parameters { } return &p } -func (p ReferenceParameters) GetField(f *field.Field, name string) *field.Field { return nil } +func (p ReferenceParameters) GetField(f *field.Field, name string) *field.Field { + var fld *field.Field + switch name { + case "id", "collection_id": + return field.String() + case "disabled": + return field.Bool() + } + return f.SetFieldState(name, fld) +} func (p ReferenceParameters) ListFields(f *field.Field, filter ...field.FieldFilterFunc) []*field.Field { - return nil + return []*field.Field{ + f.SetFieldState("id", field.String()), + f.SetFieldState("collection_id", field.String()), + f.SetFieldState("disabled", field.Bool()), + } } type ReferenceType struct{} diff --git a/pkg/references/field_test.go b/pkg/references/field_test.go index 8891c5a41307a2d568ae22e314785281da550174..ac9d5c03db107ed8f284cab3c9205afe95f1502b 100644 --- a/pkg/references/field_test.go +++ b/pkg/references/field_test.go @@ -298,3 +298,23 @@ func TestReference_JSON(t *testing.T) { assert.Equal(t, fld, res) } + +func TestReferenceField_Get(t *testing.T) { + sch := schema.New( + "a", field.String(), + "b", field.Object( + "ref", Field(nil), + ), + "ref", Field(nil), + ) + sch.ClearState() + + assert.Equal(t, field.String(), sch.GetField("ref.id")) + assert.Equal(t, field.String(), sch.GetField("ref.collection_id")) + assert.Equal(t, field.Bool(), sch.GetField("ref.disabled")) + + assert.Equal(t, field.String(), sch.GetField("b.ref.id")) + assert.Equal(t, field.String(), sch.GetField("b.ref.collection_id")) + assert.Equal(t, field.Bool(), sch.GetField("b.ref.disabled")) + +}