Files
iotlcm/server/internal/logic/system/sys_menu_document_center_test.go
T
2026-10-29 14:36:49 +08:00

54 lines
2.6 KiB
Go

package system
import (
"context"
"testing"
"git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model"
"git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model/entity"
)
func TestDocumentCenterAppearsAfterExecutionLog(t *testing.T) {
menuList := []*entity.SysMenu{
{MenuId: 1, MenuName: "系统管理", Path: "system", MenuType: "M", OrderNum: 900},
{MenuId: 1836, MenuName: "执行日志", Path: "batchExecutionLog", MenuType: "C", OrderNum: 32},
{MenuId: 2153, MenuName: "文档中心", ParentId: 1, Path: "docs", MenuType: "M", OrderNum: 13},
{MenuId: 2155, MenuName: "Web 使用手册", ParentId: 2153, Path: "https://admin.example.com/docs/manual/web/", MenuType: "C", IsFrame: 0, OrderNum: 1},
{MenuId: 2154, MenuName: "OpenAPI 文档", ParentId: 2153, Path: "https://admin.example.com/docs/openapi/v3/", MenuType: "C", IsFrame: 0, OrderNum: 2},
}
menus, err := NewSysMenu().BuildUserMenuTree(context.Background(), nil, placeDocumentCenterAfterExecutionLog(menuList), "")
if err != nil {
t.Fatal(err)
}
if len(menus) != 3 || menus[0].Id != 1836 || menus[1].Id != 2153 || menus[2].Id != 1 {
t.Fatalf("unexpected root menu order: %+v", menus)
}
if len(menus[1].Children) != 2 || menus[1].Children[0].Id != 2155 || menus[1].Children[1].Id != 2154 {
t.Fatalf("document links were not preserved: %+v", menus[1].Children)
}
if menuList[2].ParentId != 1 || menuList[2].OrderNum != 13 {
t.Fatal("original menu record was mutated")
}
}
func TestDocumentCenterMenuListHierarchy(t *testing.T) {
menus := []*model.SysMenuListModel{
{MenuId: 1, MenuName: "system", ParentId: 0, Path: "system", OrderNum: 900},
{MenuId: 2153, MenuName: "docs", ParentId: 1, Path: "docs", MenuType: "M", OrderNum: 13, Perms: "docs:menu"},
{MenuId: 2155, ParentId: 2153, Path: "https://admin.example.com/docs/manual/web/", OrderNum: 1},
{MenuId: 2154, ParentId: 2153, Path: "https://admin.example.com/docs/openapi/v3/", OrderNum: 2},
{MenuId: 1836, ParentId: 0, Path: "batchExecutionLog", OrderNum: 32},
}
placeDocumentCenterInMenuList(menus)
if menus[3].MenuId != 2153 || menus[2].MenuId != 1836 || menus[3].ParentId != 0 || menus[3].OrderNum != 33 || menus[3].Perms != "docs:menu" {
t.Fatalf("document center must follow execution log without losing permissions: %+v", menus)
}
if menus[0].ParentId != 2153 || menus[1].ParentId != 2153 {
t.Fatalf("document links must remain children: %+v", menus)
}
items := buildSysMenuFullTree(menus)
if len(items) != 3 || items[1].MenuId != 2153 || len(items[1].Children) != 2 {
t.Fatalf("unexpected root hierarchy: %+v", items)
}
}