20260922172938
This commit is contained in:
1 parent
583984c24f
commit
c8dad8d4a6
46 files changed
+3366
-1246
No files matched your search
@@ -8,7 +8,8 @@
|
||||
*
|
||||
* 2) 菜单入口权限点(s_power, b_object_type = 'menu')
|
||||
* 页面 / 外链菜单各派生一行 menu.{菜单编码}(b_action = 'access',名称/顺序/启用跟随菜单),
|
||||
* 目录没有;保存时按菜单行与该菜单的加载基线 diff;删除菜单时连同授权行一并清理。
|
||||
* 目录没有;保存时按菜单行与该菜单的加载基线 diff;删除菜单时只删权限点行,
|
||||
* 引用它的授权行用 dependent_deletes 声明,由保存层按同一条件查出编码再删(设计 §14.6)。
|
||||
*/
|
||||
import { describe, it, expect, beforeEach, vi } from 'vitest'
|
||||
import { flushPromises } from '@vue/test-utils'
|
||||
@@ -295,7 +296,7 @@ describe('菜单管理:入口权限点(s_power, menu.*)', () => {
|
||||
expect(saveObjectApi).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('删除页面菜单:入口权限点与授权行一并清理', async () => {
|
||||
it('删除页面菜单:删掉入口权限点(授权行由保存层连带清理)', async () => {
|
||||
const { wrapper } = await mountPage(MenuManagement)
|
||||
await flushPromises()
|
||||
|
||||
@@ -305,12 +306,13 @@ describe('菜单管理:入口权限点(s_power, menu.*)', () => {
|
||||
await flushPromises()
|
||||
|
||||
const requests = saveObjectApi.mock.calls.at(-1)[0]
|
||||
expect(requests.find((request) => request.table === 's_power').deletes).toEqual([
|
||||
{ b_id: 'menu.otherdata' },
|
||||
const powerReq = requests.find((request) => request.table === 's_power')
|
||||
expect(powerReq.deletes).toEqual([{ b_id: 'menu.otherdata' }])
|
||||
// 授权行不在这里拼:用 dependent_deletes 声明依赖表 / 键列 / 取值列,
|
||||
// 由保存层按同一条件查出权限编码再删(前端不查询、不逐个拼授权行)
|
||||
expect(powerReq.dependent_deletes).toEqual([
|
||||
{ table: 's_user_power', key_field: 'b_power_id', source_field: 'b_id' },
|
||||
])
|
||||
const granted = requests.find((request) => request.table === 's_user_power')
|
||||
expect(granted.key_field).toBe('b_power_id')
|
||||
expect(granted.deletes).toEqual([{ b_power_id: 'menu.otherdata' }])
|
||||
// 菜单主表最后删
|
||||
expect(requests.at(-1)).toMatchObject({ table: 's_menu' })
|
||||
})
|
||||
|
||||
Reference in new issue
Block a user