20260914172820

This commit is contained in:
oneao committed 2026-09-14 17:28:20 +08:00
1 parent c31329d387
commit 549c8bd2eb
38 files changed
+3430 -502

No files matched your search

@@ -5,6 +5,8 @@
* (表现为 "Component inside <Transition> renders non-element root node" +
* "Cannot set properties of null (setting '__vnode')")。
* 修复:watch(menuSelectedId) 对未落库节点不走 loadMenuConfig,从树节点重建草稿。
*
* 临时 id 现由 createTempId() 生成本地负数(不再取号),断言按实际值 -1 校验。
*/
import { describe, it, expect, beforeEach, vi } from 'vitest'
import { flushPromises } from '@vue/test-utils'
@@ -28,9 +30,11 @@ import { loadDataApi } from '@/services/api'
const savedMenu = {
b_id: '1',
b_code: 'home',
b_parent_id: null,
b_depth: 0,
b_path: '/1/',
b_name: '首页',
b_menu_type: 'page',
b_parent_id: null,
b_route: '/dashboard',
b_xh: 10,
b_canuse: 1,
@@ -40,8 +44,10 @@ beforeEach(() => {
loadDataApi.mockReset()
loadDataApi.mockImplementation((view, where) => {
if (view === 's_menu' && where === '1 = 1') return Promise.resolve({ data: [savedMenu] })
if (view === 's_menu' && where === 'b_id = 1') return Promise.resolve({ data: [savedMenu] })
if (view === 's_menu') return Promise.resolve({ data: [] }) // 含 b_id = 9001(临时 id):查无此行
// 加载单行用 sqlText 拼的 N'1' 字面量
if (view === 's_menu' && where === "b_id = N'1'")
return Promise.resolve({ data: [savedMenu] })
if (view === 's_menu') return Promise.resolve({ data: [] }) // 含本地临时 id(负数):查无此行
return Promise.resolve({ data: [] })
})
})
@@ -54,7 +60,7 @@ describe('菜单管理:未保存新节点来回切换', () => {
// 1. 新建节点(未保存)
await wrapper.vm.addMenu(null, 'page')
await flushPromises()
expect(String(wrapper.vm.menuSelectedId)).toBe('9001')
expect(String(wrapper.vm.menuSelectedId)).toBe('-1')
expect(wrapper.vm.maindata?.b_menu_type).toBe('page')
// 2. 切到旧节点(已保存)
@@ -64,14 +70,14 @@ describe('菜单管理:未保存新节点来回切换', () => {
// 3. 切回新节点:不应对临时 id 发起查库请求
loadDataApi.mockClear()
wrapper.vm.menuSelectedId = '9001'
wrapper.vm.menuSelectedId = '-1'
await flushPromises()
await flushPromises()
expect(loadDataApi).not.toHaveBeenCalled()
expect(wrapper.vm.maindata).not.toBeNull()
expect(String(wrapper.vm.maindata?.b_id)).toBe('9001')
expect(String(wrapper.vm.maindata?.b_id)).toBe('-1')
expect(wrapper.vm.maindata?.b_menu_type).toBe('page')
expect(String(wrapper.vm.loadedMenuId)).toBe('9001')
expect(String(wrapper.vm.loadedMenuId)).toBe('-1')
})
})