Files
cn-rdms-web/tests/role-resource-tree.test.ts

58 lines
1.5 KiB
TypeScript
Raw Normal View History

import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import * as roleResourceTree from '../src/views/system/role/modules/role-resource-tree';
type MenuNode = {
id: string;
children?: MenuNode[];
};
type NormalizeRoleMenuCheckedIds = (input: { menuTree: MenuNode[]; checkedIds: string[] }) => string[];
const menuTree: MenuNode[] = [
{
id: 'personal',
children: [
{
id: 'weekly',
children: [{ id: 'weeklyDetail' }]
},
{
id: 'monthly',
children: [{ id: 'monthlyDetail' }]
}
]
},
{
id: 'infra',
children: [{ id: 'stateMachine' }, { id: 'cmd' }]
}
];
const normalizeRoleMenuCheckedIds = (roleResourceTree as { normalizeRoleMenuCheckedIds?: NormalizeRoleMenuCheckedIds })
.normalizeRoleMenuCheckedIds;
describe('normalizeRoleMenuCheckedIds', () => {
it('removes partially covered parent ids before tree rendering', () => {
assert.equal(typeof normalizeRoleMenuCheckedIds, 'function');
const result = normalizeRoleMenuCheckedIds?.({
menuTree,
checkedIds: ['personal', 'weekly', 'weeklyDetail']
});
assert.deepEqual(result, ['weekly', 'weeklyDetail']);
});
it('keeps parent ids when the backend uses a parent-only full-branch representation', () => {
assert.equal(typeof normalizeRoleMenuCheckedIds, 'function');
const result = normalizeRoleMenuCheckedIds?.({
menuTree,
checkedIds: ['personal']
});
assert.deepEqual(result, ['personal']);
});
});