42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
package platform
|
|
|
|
import "testing"
|
|
|
|
func TestPlatformMenusAreStaticTwoDimensionalData(t *testing.T) {
|
|
if len(PlatformMenus) == 0 {
|
|
t.Fatal("PlatformMenus must contain menu groups")
|
|
}
|
|
seen := make(map[string]bool)
|
|
for _, group := range PlatformMenus {
|
|
if len(group) < 2 {
|
|
t.Fatal("each platform menu group must include a first-level menu and at least one second-level menu")
|
|
}
|
|
parent := group[0]
|
|
if parent.ParentIdentity != "" {
|
|
t.Fatalf("first menu in group must be first-level: %#v", parent)
|
|
}
|
|
for index, menu := range group {
|
|
if menu.Identity == "" || menu.GroupCode == "" {
|
|
t.Fatalf("menu identity and code are required: %#v", menu)
|
|
}
|
|
if index > 0 && menu.ParentIdentity != parent.Identity {
|
|
t.Fatalf("second-level menu %s must reference parent %s", menu.Identity, parent.Identity)
|
|
}
|
|
if seen[menu.Identity] {
|
|
t.Fatalf("duplicate menu identity: %s", menu.Identity)
|
|
}
|
|
seen[menu.Identity] = true
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRootLoadsAllStaticPlatformMenus(t *testing.T) {
|
|
menus, err := LoadPlatformMenus("root")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(menus) != len(AllPlatformMenus()) {
|
|
t.Fatalf("root menu count = %d, want %d", len(menus), len(AllPlatformMenus()))
|
|
}
|
|
}
|