From 7b14a239c46a7700051a4115e274b55e0bee5e60 Mon Sep 17 00:00:00 2001 From: Alena Petraki <a.petraki@perx.ru> Date: Thu, 15 Aug 2024 18:12:01 +0000 Subject: [PATCH] =?UTF-8?q?chore(schema):=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B2=20Reference=20=D0=BF=D0=BE=D0=BB=D0=B5?= =?UTF-8?q?=D0=B9=20=D1=81=D1=85=D0=B5=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/files/field_test.go | 34 ++++++++++++++++++++++++++++++++++ pkg/references/field.go | 17 +++++++++++++++-- pkg/references/field_test.go | 20 ++++++++++++++++++++ 3 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 pkg/files/field_test.go diff --git a/pkg/files/field_test.go b/pkg/files/field_test.go new file mode 100644 index 00000000..7b631730 --- /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 905c2d43..f80e7b5a 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 8891c5a4..ac9d5c03 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")) + +} -- GitLab