优化优化
This commit is contained in:
@@ -80,7 +80,7 @@ describe('adminNavigation', () => {
|
||||
])
|
||||
})
|
||||
|
||||
it('assigns every page a unique path and keeps real permissions unique', () => {
|
||||
it('assigns every page a unique path and only shares permissions backed by the API contract', () => {
|
||||
const leaves = getNavigationLeaves(adminNavigation)
|
||||
const paths = leaves.map((item) => item.path)
|
||||
const permissions = leaves.flatMap((item) => item.permission ? [item.permission] : [])
|
||||
@@ -103,14 +103,38 @@ describe('adminNavigation', () => {
|
||||
expect(paths).not.toContain('/prototype/container-management/preload-list')
|
||||
expect(paths).not.toContain('/prototype/container-management/manifest')
|
||||
expect(paths).not.toContain('/prototype/general/fee-items')
|
||||
expect(paths).toContain('/finance/bills')
|
||||
expect(paths).toEqual(expect.arrayContaining([
|
||||
'/finance/customer-accounts',
|
||||
'/finance/customer-arap',
|
||||
'/finance/customer-statements',
|
||||
'/finance/settlement-receivables',
|
||||
'/finance/settlement-payables',
|
||||
]))
|
||||
expect(paths).not.toEqual(expect.arrayContaining(['/finance/bills', '/finance/receipts', '/finance/costs']))
|
||||
expect(paths).toContain('/prototype/system-management/brand-settings')
|
||||
expect(paths).toContain('/system/permissions')
|
||||
expect(new Set(paths).size).toBe(paths.length)
|
||||
expect(new Set(permissions).size).toBe(permissions.length)
|
||||
const duplicatedPermissions = permissions.filter((permission, index) => permissions.indexOf(permission) !== index)
|
||||
expect(new Set(duplicatedPermissions)).toEqual(new Set(['platform:finance:bill:view']))
|
||||
expect(leaves.every((item) => Boolean(item.icon))).toBe(true)
|
||||
})
|
||||
|
||||
it('shows the five formal finance pages with their real backend permissions', () => {
|
||||
const filtered = filterAdminNavigation(adminNavigation, new Set([
|
||||
'platform:finance:bill:view',
|
||||
'platform:finance:receipt:view',
|
||||
'platform:finance:cost:view',
|
||||
]))
|
||||
|
||||
expect(getNavigationLeaves(filtered).map((item) => item.path).filter((path) => path.startsWith('/finance/'))).toEqual([
|
||||
'/finance/customer-accounts',
|
||||
'/finance/customer-arap',
|
||||
'/finance/customer-statements',
|
||||
'/finance/settlement-receivables',
|
||||
'/finance/settlement-payables',
|
||||
])
|
||||
})
|
||||
|
||||
it('filters protected pages without mutating the source tree', () => {
|
||||
const sourceSnapshot = JSON.stringify(adminNavigation, (key, value) => key === 'icon' ? '[icon]' : value)
|
||||
const filtered = filterAdminNavigation(adminNavigation, new Set(['platform:permission:list']))
|
||||
|
||||
Reference in New Issue
Block a user