Skip to content
Snippets Groups Projects
Commit c2ab2730 authored by ensiouel's avatar ensiouel
Browse files

Merge remote-tracking branch 'origin/master' into feature/PRXS-1219-PrometheusMetrics

# Conflicts:
#	go.mod
#	go.sum
parents 3d4f3efa 76b3e39c
Branches
Tags
No related merge requests found
......@@ -33,6 +33,7 @@ require (
require (
cloud.google.com/go/compute v1.23.3 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
github.com/brianvoe/gofakeit/v6 v6.26.3
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
......@@ -67,4 +68,5 @@ require (
golang.org/x/text v0.14.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
)
......@@ -93,6 +93,8 @@ type Action struct {
Extension string `mapstructure:"extension,omitempty" json:"extension,omitempty"` // Расширение
Action string `mapstructure:"action,omitempty" json:"action"` // Идентификатор действия
Target ActionTarget `mapstructure:"target,omitempty" json:"target"` // Отображение результата действия
View ActionView `mapstructure:"view,omitempty" json:"view,omitempty"` // Отображение действия в интерфейсе
Order int32 `mapstructure:"order,omitempty" json:"order,omitempty"` // Порядок отображения действия в меню
Parent string `mapstructure:"parent,omitempty" json:"parent,omitempty"` // Идентификатор родительского действия (для отображения в меню)
Name string `mapstructure:"name,omitempty" json:"name,omitempty"` // Название действия для отображения в интерфейсе (пункт меню, кнопка).
Description string `mapstructure:"description,omitempty" json:"description,omitempty"` // Описание действия для отображения в интерфейсе
......@@ -111,10 +113,18 @@ type Action struct {
}
func ActionToMap(action *Action) map[string]interface{} {
if action == nil {
return nil
}
res := make(map[string]interface{})
_ = mapstructure.Decode(action, &res)
if err := mapstructure.Decode(action, &res); err != nil {
return nil
}
res["kind"] = int64(action.Kind.Number())
res["target"] = int64(action.Target.Number())
res["view"] = int64(action.View.Number())
return res
}
......@@ -217,6 +227,8 @@ func ActionFromPB(a *pb.Action) *Action {
Extension: a.Extension,
Action: a.Action,
Target: a.Target,
View: a.View,
Order: a.Order,
Parent: a.Parent,
Name: a.Name,
Description: a.Description,
......@@ -258,5 +270,7 @@ func ActionToPB(a *Action) *pb.Action {
NavigationRoute: a.NavigationRoute,
Autorun: a.Autorun,
Confirm: a.Confirm,
View: a.View,
Order: a.Order,
}
}
package extension
import (
"testing"
pb "git.perx.ru/perxis/perxis-go/proto/extensions"
"github.com/brianvoe/gofakeit/v6"
"github.com/stretchr/testify/require"
)
func TestActionToProto(t *testing.T) {
t.Run("Filled struct", func(t *testing.T) {
var pbAction *pb.Action
err := gofakeit.Struct(&pbAction)
require.NoError(t, err)
action := ActionFromPB(pbAction)
result := ActionToPB(action)
require.Equal(t, pbAction, result)
})
t.Run("Action is nil", func(t *testing.T) {
var pbAction *pb.Action
action := ActionFromPB(pbAction)
result := ActionToPB(action)
require.Equal(t, pbAction, result)
})
}
func TestActionToMap(t *testing.T) {
t.Run("Filled struct", func(t *testing.T) {
var action *Action
err := gofakeit.Struct(&action)
require.NoError(t, err)
dict := ActionToMap(action)
result, err := ActionFromMap(dict)
require.NoError(t, err)
require.Equal(t, action, result)
})
t.Run("Action is nil", func(t *testing.T) {
var action *Action
dict := ActionToMap(action)
result, err := ActionFromMap(dict)
require.NoError(t, err)
require.Equal(t, &Action{}, result)
})
}
func TestActionRequestToProto(t *testing.T) {
t.Run("Filled struct", func(t *testing.T) {
var pbAction *pb.ActionRequest
err := gofakeit.Struct(&pbAction)
require.NoError(t, err)
action := ActionRequestFromPB(pbAction)
result := ActionRequestToPB(action)
require.Equal(t, pbAction, result)
})
t.Run("Action is nil", func(t *testing.T) {
var pbAction *pb.ActionRequest
action := ActionRequestFromPB(pbAction)
result := ActionRequestToPB(action)
require.Equal(t, pbAction, result)
})
}
func TestActionResponseToProto(t *testing.T) {
t.Run("Filled struct", func(t *testing.T) {
var pbAction *pb.ActionResponse
err := gofakeit.Struct(&pbAction)
require.NoError(t, err)
action := ActionResponseFromPB(pbAction)
result := ActionResponseToPB(action)
require.Equal(t, pbAction, result)
})
t.Run("Action is nil", func(t *testing.T) {
var pbAction *pb.ActionResponse
action := ActionResponseFromPB(pbAction)
result := ActionResponseToPB(action)
require.Equal(t, pbAction, result)
})
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment