66 lines
2.4 KiB
JavaScript
66 lines
2.4 KiB
JavaScript
const assert = require('node:assert/strict')
|
|
const test = require('node:test')
|
|
|
|
const { buildNavigation } = require('../src/layout/navigation.js')
|
|
|
|
test('selects the layout record when normalized routes contain duplicate root paths', () => {
|
|
const routes = [
|
|
{ path: '/', name: 'sense-dashboard', children: [], meta: { title: '工作台' } },
|
|
{ path: '/devices', name: 'sense-devices', children: [], meta: { title: '设备管理' } },
|
|
{
|
|
path: '/',
|
|
children: [
|
|
{ path: 'devices', meta: { title: '设备管理', permission: 'device.read', order: 10 } },
|
|
{ path: '', meta: { title: '工作台', order: 0 } },
|
|
{ path: 'users', meta: { title: '用户与权限', permission: 'identity.users.read', order: 90 } }
|
|
]
|
|
}
|
|
]
|
|
|
|
assert.deepEqual(buildNavigation(routes, ['device.read']), [
|
|
{ path: '/', title: '工作台', icon: undefined, order: 0 },
|
|
{ path: '/devices', title: '设备管理', icon: undefined, order: 10 }
|
|
])
|
|
})
|
|
|
|
test('returns no unauthorized or hidden entries', () => {
|
|
const routes = [{
|
|
path: '/',
|
|
children: [
|
|
{ path: '', meta: { title: '工作台' } },
|
|
{ path: 'users', meta: { title: '用户与权限', permission: 'identity.users.read' } },
|
|
{ path: 'internal', meta: { title: '内部页', hidden: true } }
|
|
]
|
|
}]
|
|
|
|
assert.deepEqual(buildNavigation(routes), [
|
|
{ path: '/', title: '工作台', icon: undefined, order: 0 }
|
|
])
|
|
})
|
|
|
|
test('administrator receives every Sense MVP navigation entry', () => {
|
|
const entries = [
|
|
['', '工作台', null, 0],
|
|
['devices', '设备管理', 'device.read', 10],
|
|
['admission', '视频接入', 'device.write', 20],
|
|
['media', '视频服务', 'media.read', 30],
|
|
['liveview', '实时监看', 'media.read', 40],
|
|
['areas', '区域与警戒线', 'area.read', 50],
|
|
['users', '用户与权限', 'identity.users.read', 90],
|
|
['audit', '操作记录', 'identity.audit.read', 91]
|
|
]
|
|
const routes = [{ path: '/', children: entries.map(([path, title, permission, order]) => ({
|
|
path,
|
|
meta: { title, permission, order }
|
|
})) }]
|
|
const permissions = [
|
|
'device.read', 'device.write', 'media.read', 'area.read',
|
|
'identity.users.read', 'identity.audit.read'
|
|
]
|
|
|
|
assert.deepEqual(buildNavigation(routes, permissions).map((item) => item.title), [
|
|
'工作台', '设备管理', '视频接入', '视频服务', '实时监看',
|
|
'区域与警戒线', '用户与权限', '操作记录'
|
|
])
|
|
})
|