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), [ '工作台', '设备管理', '视频接入', '视频服务', '实时监看', '区域与警戒线', '用户与权限', '操作记录' ]) })