gui/pkg/menu/service_test.go

67 lines
1.6 KiB
Go
Raw Normal View History

package menu
import (
"context"
"testing"
core "dappco.re/go/core"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func newTestMenuService(t *testing.T) (*Service, *core.Core) {
t.Helper()
c := core.New(
core.WithService(Register(newMockPlatform())),
core.WithServiceLock(),
)
require.True(t, c.ServiceStartup(context.Background(), nil).OK)
svc := core.MustServiceFor[*Service](c, "menu")
return svc, c
}
func taskRun(c *core.Core, name string, task any) core.Result {
return c.Action(name).Run(context.Background(), core.NewOptions(
core.Option{Key: "task", Value: task},
))
}
func TestRegister_Good(t *testing.T) {
svc, _ := newTestMenuService(t)
assert.NotNil(t, svc)
assert.NotNil(t, svc.manager)
}
func TestTaskSetAppMenu_Good(t *testing.T) {
_, c := newTestMenuService(t)
items := []MenuItem{
{Label: "File", Children: []MenuItem{
{Label: "New"},
{Type: "separator"},
{Label: "Quit"},
}},
}
r := taskRun(c, "menu.setAppMenu", TaskSetAppMenu{Items: items})
require.True(t, r.OK)
}
func TestQueryGetAppMenu_Good(t *testing.T) {
_, c := newTestMenuService(t)
items := []MenuItem{{Label: "File"}, {Label: "Edit"}}
taskRun(c, "menu.setAppMenu", TaskSetAppMenu{Items: items})
r := c.QUERY(QueryGetAppMenu{})
require.True(t, r.OK)
menuItems := r.Value.([]MenuItem)
assert.Len(t, menuItems, 2)
assert.Equal(t, "File", menuItems[0].Label)
}
func TestTaskSetAppMenu_Bad(t *testing.T) {
c := core.New(core.WithServiceLock())
r := c.Action("menu.setAppMenu").Run(context.Background(), core.NewOptions())
assert.False(t, r.OK)
}