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