41 lines
2.4 KiB
TypeScript
41 lines
2.4 KiB
TypeScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { readSource } from './helpers.ts'
|
|
import { emptyMenuManageForm, toMenuCreateRequest, toMenuUpdateRequest, validateMenuManageForm } from '../src/pages/account/menu-manage-model.ts'
|
|
|
|
// 验收反馈:权限标识/路由由后台自动生成,不再出现在菜单表单里。
|
|
// 前端契约:表单不采集、校验不要求、请求体不携带;后端创建时自动生成、编辑时保持原值。
|
|
|
|
test('align_menu_auto_key_normal_primary_path', () => {
|
|
const page = readSource('src/pages/account/MenusPage.vue')
|
|
assert.ok(!page.includes('权限标识'), '表单不应再有“权限标识”项')
|
|
assert.ok(!page.includes('label="路由"'), '表单不应再有“路由”项')
|
|
})
|
|
|
|
test('align_menu_auto_key_normal_variant_input', () => {
|
|
const createReq = toMenuCreateRequest({ ...emptyMenuManageForm(), name: '新菜单' })
|
|
const updateReq = toMenuUpdateRequest({ ...emptyMenuManageForm(), name: '改名' })
|
|
assert.ok(!('columnKey' in createReq), '创建请求不携带权限标识')
|
|
assert.ok(!('routePath' in createReq), '创建请求不携带路由')
|
|
assert.ok(!('columnKey' in updateReq), '更新请求不携带权限标识')
|
|
assert.ok(!('routePath' in updateReq), '更新请求不携带路由')
|
|
})
|
|
|
|
test('align_menu_auto_key_boundary_empty_input', () => {
|
|
const result = validateMenuManageForm({ ...emptyMenuManageForm(), name: '有名称' })
|
|
assert.equal(result.valid, true, '未填权限标识/路由也应通过表单校验')
|
|
})
|
|
|
|
test('align_menu_auto_key_repeated_operation_is_idempotent', () => {
|
|
const model = readSource('src/pages/account/menu-manage-model.ts')
|
|
assert.match(model, /后台自动生成/, 'model 需注释说明自动生成语义')
|
|
})
|
|
|
|
test('align_menu_auto_key_dependency_failure_returns_actionable_message', () => {
|
|
// 后端契约:创建缺省自动生成 menu_auto_<类型>_<时间戳> 与 auto/<标识>,编辑缺省保持原值。
|
|
const java = readSource('../backend-java/src/main/java/com/nanri/aiimage/modules/permission/service/PermissionMenuService.java')
|
|
assert.match(java, /generateColumnKey|menu_auto_/, '后端含权限标识自动生成逻辑')
|
|
assert.match(java, /generateRoutePath|auto\/<columnKey>|"auto\/" \+ columnKey/, '后端含路由自动生成逻辑')
|
|
assert.match(java, /entity\.getColumnKey\(\)/, '编辑缺省保持原权限标识')
|
|
})
|