实现系统菜单树管理第一版
This commit is contained in:
@@ -10,6 +10,7 @@ import {
|
||||
createAdminUser,
|
||||
fetchAdminAudits,
|
||||
fetchAdminHotels,
|
||||
fetchAdminMenuTree,
|
||||
fetchAdminMenus,
|
||||
fetchAdminPermissions,
|
||||
fetchAdminRoleDetail,
|
||||
@@ -20,6 +21,7 @@ import {
|
||||
updateAdminHotel,
|
||||
updateAdminHotelStatus,
|
||||
updateAdminMenu,
|
||||
updateAdminMenuTreeOrder,
|
||||
updateAdminRole,
|
||||
updateAdminUser,
|
||||
} from '@/services/systemAdminService'
|
||||
@@ -107,6 +109,69 @@ describe('systemAdminService', () => {
|
||||
)
|
||||
})
|
||||
|
||||
it('fetches and saves the admin menu tree endpoints', async () => {
|
||||
const fetchMock = vi.spyOn(globalThis, 'fetch').mockResolvedValue(
|
||||
mockJsonResponse({
|
||||
items: [
|
||||
{
|
||||
id: '40001',
|
||||
parent_id: null,
|
||||
menu_code: 'SYSTEM_SETTINGS',
|
||||
menu_name: '系统设置',
|
||||
menu_type: 'GROUP',
|
||||
route_path: '/system',
|
||||
component_key: 'system',
|
||||
icon_key: 'pi pi-cog',
|
||||
permission_code: 'SYSTEM_ADMIN_CONSOLE_ACCESS',
|
||||
sort_order: 900,
|
||||
visible: true,
|
||||
menu_status: 'ACTIVE',
|
||||
known_route: true,
|
||||
created_at: '2026-07-16T00:00:00Z',
|
||||
updated_at: '2026-07-16T00:00:00Z',
|
||||
children: [],
|
||||
},
|
||||
],
|
||||
warnings: ['菜单 49999 的 parent_id 不存在,已按根级异常节点返回。'],
|
||||
}),
|
||||
)
|
||||
|
||||
const tree = await fetchAdminMenuTree()
|
||||
await updateAdminMenuTreeOrder({
|
||||
items: [
|
||||
{
|
||||
menu_id: '40002',
|
||||
parent_id: '40001',
|
||||
sort_order: 100,
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
expect(tree.items[0]?.children).toEqual([])
|
||||
expect(tree.warnings[0]).toContain('parent_id')
|
||||
expect(fetchMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'/api/admin/menus/tree',
|
||||
expect.objectContaining({ method: 'GET' }),
|
||||
)
|
||||
expect(fetchMock).toHaveBeenNthCalledWith(
|
||||
2,
|
||||
'/api/admin/menus/tree-order',
|
||||
expect.objectContaining({
|
||||
method: 'PUT',
|
||||
body: JSON.stringify({
|
||||
items: [
|
||||
{
|
||||
menu_id: '40002',
|
||||
parent_id: '40001',
|
||||
sort_order: 100,
|
||||
},
|
||||
],
|
||||
}),
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
||||
it('fetches the readonly permission list', async () => {
|
||||
const fetchMock = vi.spyOn(globalThis, 'fetch').mockResolvedValue(
|
||||
mockJsonResponse([
|
||||
|
||||
Reference in New Issue
Block a user