94 lines
2 KiB
Go
94 lines
2 KiB
Go
// pkg/menu/menu_test.go
|
|
package menu
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func newTestManager() (*Manager, *mockPlatform) {
|
|
p := newMockPlatform()
|
|
return NewManager(p), p
|
|
}
|
|
|
|
func TestManager_Build_Good(t *testing.T) {
|
|
m, p := newTestManager()
|
|
items := []MenuItem{
|
|
{Label: "File"},
|
|
{Label: "Edit"},
|
|
}
|
|
menu := m.Build(items)
|
|
assert.NotNil(t, menu)
|
|
assert.Len(t, p.menus, 1)
|
|
assert.Len(t, p.menus[0].items, 2)
|
|
assert.Equal(t, "File", p.menus[0].items[0].label)
|
|
}
|
|
|
|
func TestManager_Build_Separator_Good(t *testing.T) {
|
|
m, p := newTestManager()
|
|
items := []MenuItem{
|
|
{Label: "Above"},
|
|
{Type: "separator"},
|
|
{Label: "Below"},
|
|
}
|
|
m.Build(items)
|
|
assert.Len(t, p.menus[0].items, 3)
|
|
assert.Equal(t, "---", p.menus[0].items[1].label)
|
|
}
|
|
|
|
func TestManager_Build_Submenu_Good(t *testing.T) {
|
|
m, p := newTestManager()
|
|
items := []MenuItem{
|
|
{Label: "Parent", Children: []MenuItem{
|
|
{Label: "Child 1"},
|
|
{Label: "Child 2"},
|
|
}},
|
|
}
|
|
m.Build(items)
|
|
assert.Len(t, p.menus[0].subs, 1)
|
|
assert.Len(t, p.menus[0].subs[0].items, 2)
|
|
}
|
|
|
|
func TestManager_Build_Accelerator_Good(t *testing.T) {
|
|
m, p := newTestManager()
|
|
items := []MenuItem{
|
|
{Label: "Save", Accelerator: "CmdOrCtrl+S"},
|
|
}
|
|
m.Build(items)
|
|
assert.Equal(t, "CmdOrCtrl+S", p.menus[0].items[0].accel)
|
|
}
|
|
|
|
func TestManager_Build_OnClick_Good(t *testing.T) {
|
|
m, p := newTestManager()
|
|
called := false
|
|
items := []MenuItem{
|
|
{Label: "Action", OnClick: func() { called = true }},
|
|
}
|
|
m.Build(items)
|
|
p.menus[0].items[0].onClick()
|
|
assert.True(t, called)
|
|
}
|
|
|
|
func TestManager_Build_Role_Good(t *testing.T) {
|
|
m, p := newTestManager()
|
|
appMenu := RoleAppMenu
|
|
items := []MenuItem{
|
|
{Role: &appMenu},
|
|
}
|
|
m.Build(items)
|
|
assert.Contains(t, p.menus[0].roles, RoleAppMenu)
|
|
}
|
|
|
|
func TestManager_SetApplicationMenu_Good(t *testing.T) {
|
|
m, p := newTestManager()
|
|
items := []MenuItem{{Label: "Test"}}
|
|
m.SetApplicationMenu(items)
|
|
assert.NotNil(t, p.appMenu)
|
|
}
|
|
|
|
func TestManager_Build_Empty_Good(t *testing.T) {
|
|
m, _ := newTestManager()
|
|
menu := m.Build(nil)
|
|
assert.NotNil(t, menu)
|
|
}
|