diff --git a/pkg/extension/schema.go b/pkg/extension/schema.go index cf71a4568c8ed734bda41e344936b728a8ed8b99..577d27b8a13b3586fc267fb09b93d967be5be881 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 b15a210045b85ef7349cbdaad3b7365eb6c411a0..a3381330c85bd13582f8b33383080975a7c8534f 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)}, }, }, }