From 530872dfa13f77a21886ae4e27657d1aa010556b Mon Sep 17 00:00:00 2001 From: ko_oler <kooler89@gmail.com> Date: Wed, 18 Oct 2023 18:28:54 +0300 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=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20getEnumOp?= =?UTF-8?q?t,=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D0=B0=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=B2=D0=BE=D0=B4=D0=B8=D0=BB=D0=B0=20=D0=BA=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=B2=D0=B5=D1=80=D0=BD=D1=8B=D0=BC=20enum=20=D0=B7?= =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BB=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D0=B8=20system=5Fact?= =?UTF-8?q?ions=20=D1=83=20=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20kind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/extension/schema.go | 10 +++++--- pkg/extension/schema_test.go | 47 +++++++++++++++++++++++++++++++++--- 2 files changed, 49 insertions(+), 8 deletions(-) diff --git a/pkg/extension/schema.go b/pkg/extension/schema.go index cf71a456..577d27b8 100644 --- a/pkg/extension/schema.go +++ b/pkg/extension/schema.go @@ -94,15 +94,17 @@ func NewActionsCollection(spaceID, envID string) *collections.Collection { } func getEnumOpt(opts map[int32]string) []validate.EnumOpt { - keys := make([]string, 0, len(opts)) - for _, k := range opts { + keys := make([]int32, 0, len(opts)) + for k := range opts { keys = append(keys, k) } - sort.Strings(keys) + sort.Slice(keys, func(i, j int) bool { + return keys[i] < keys[j] + }) enum := make([]validate.EnumOpt, len(opts)) for i, n := range keys { - enum[i] = validate.EnumOpt{Name: n, Value: float64(i)} + enum[i] = validate.EnumOpt{Name: opts[n], Value: float64(n)} } return enum } diff --git a/pkg/extension/schema_test.go b/pkg/extension/schema_test.go index b15a2100..a3381330 100644 --- a/pkg/extension/schema_test.go +++ b/pkg/extension/schema_test.go @@ -5,6 +5,7 @@ import ( "testing" "git.perx.ru/perxis/perxis-go/pkg/schema/validate" + pb "git.perx.ru/perxis/perxis-go/proto/extensions" ) func Test_getEnumOpt(t *testing.T) { @@ -17,10 +18,48 @@ func Test_getEnumOpt(t *testing.T) { name: "#1", opts: map[int32]string{1: "a", 2: "b", 3: "c", 1000: "w"}, want: []validate.EnumOpt{ - {Name: "a", Value: float64(0)}, - {Name: "b", Value: float64(1)}, - {Name: "c", Value: float64(2)}, - {Name: "w", Value: float64(3)}, + {Name: "a", Value: float64(1)}, + {Name: "b", Value: float64(2)}, + {Name: "c", Value: float64(3)}, + {Name: "w", Value: float64(1000)}, + }, + }, + { + name: "#2", + opts: pb.Action_Kind_name, + want: []validate.EnumOpt{ + {Name: "DEFAULT", Value: float64(0)}, + {Name: "SPACE", Value: float64(1)}, + {Name: "ENVIRONMENT", Value: float64(2)}, + {Name: "COLLECTION", Value: float64(3)}, + {Name: "ITEM", Value: float64(4)}, + {Name: "ITEMS", Value: float64(5)}, + {Name: "REVISION", Value: float64(6)}, + {Name: "CREATE", Value: float64(7)}, + }, + }, + { + name: "#3", + opts: pb.Action_View_name, + want: []validate.EnumOpt{ + {Name: "DEFAULT_VIEW", Value: float64(0)}, + {Name: "HIDDEN_VIEW", Value: float64(1)}, + {Name: "MAIN_MENU_VIEW", Value: float64(2)}, + {Name: "MAIN_MENU_BOTTOM_VIEW", Value: float64(3)}, + }, + }, + { + name: "#4", + opts: pb.Target_name, + want: []validate.EnumOpt{ + {Name: "DEFAULT", Value: float64(0)}, + {Name: "MODAL", Value: float64(1)}, + {Name: "WIDE", Value: float64(2)}, + {Name: "MAIN", Value: float64(4)}, + {Name: "DRAWER", Value: float64(5)}, + {Name: "NOTIFICATION", Value: float64(6)}, + {Name: "BLANK", Value: float64(7)}, + {Name: "NONE", Value: float64(100)}, }, }, } -- GitLab