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.iotlcm.example.com/docs/manual/web/", MenuType: "C", IsFrame: 0, OrderNum: 1}, {MenuId: 2154, MenuName: "OpenAPI 文档", ParentId: 2153, Path: "https://admin.iotlcm.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.iotlcm.example.com/docs/manual/web/", OrderNum: 1}, {MenuId: 2154, ParentId: 2153, Path: "https://admin.iotlcm.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) } }