优化
This commit is contained in:
@@ -8,32 +8,65 @@ import {
|
||||
} from './adminNavigation'
|
||||
|
||||
describe('adminNavigation', () => {
|
||||
it('exposes implemented phase-one and phase-two menus while retaining future prototype nodes as comments', () => {
|
||||
it('keeps the latest prototype menu skeleton in source order and groups additions under general', () => {
|
||||
expect(adminNavigation.map((item) => item.title)).toEqual([
|
||||
'首页数据看板',
|
||||
'客户管理',
|
||||
'国内仓',
|
||||
'头程订单',
|
||||
'头程计费',
|
||||
'海外派送',
|
||||
'服务中心',
|
||||
'供应商中心',
|
||||
'货柜管理',
|
||||
'海外业务',
|
||||
'海外仓库存',
|
||||
'财务管理',
|
||||
'销售管理',
|
||||
'通用',
|
||||
'系统管理',
|
||||
])
|
||||
expect(adminNavigation[0].children?.map((item) => item.title)).toEqual(['客户列表'])
|
||||
expect(adminNavigation.find((item) => item.key === 'customers')?.children?.map((item) => item.title)).toEqual([
|
||||
'客户列表',
|
||||
'海外仓阶梯费用',
|
||||
])
|
||||
expect(adminNavigation.find((item) => item.key === 'domestic-warehouse')?.children?.map((item) => item.title)).toEqual([
|
||||
'仓库管理',
|
||||
'入库单',
|
||||
'入库单列表',
|
||||
'入库单测量',
|
||||
'测量数据审核',
|
||||
'库位管理',
|
||||
'托盘管理',
|
||||
])
|
||||
expect(adminNavigation.find((item) => item.key === 'first-leg-pricing')?.children?.map((item) => item.title)).toEqual([
|
||||
'客户计费规则',
|
||||
'船司 FBA 价格',
|
||||
expect(adminNavigation.find((item) => item.key === 'supplier-center')?.children?.map((item) => item.title)).toEqual([
|
||||
'供应商列表',
|
||||
'快递公司',
|
||||
'往来单位',
|
||||
])
|
||||
expect(adminNavigation.find((item) => item.key === 'overseas-inventory')?.children?.map((item) => item.title)).toEqual([
|
||||
'入库单',
|
||||
'换标单',
|
||||
'出库单',
|
||||
'托盘管理',
|
||||
'箱号管理',
|
||||
'产品库',
|
||||
'退货库存',
|
||||
'暂扣库存',
|
||||
])
|
||||
expect(adminNavigation.find((item) => item.key === 'general')?.children?.map((item) => item.title)).toEqual([
|
||||
'产品信息',
|
||||
'费用项目',
|
||||
'FBA编码地址',
|
||||
'船期价格表',
|
||||
'车辆列表',
|
||||
'仓库管理',
|
||||
'头程订单',
|
||||
'头程计费',
|
||||
'下载中心',
|
||||
'菜单权限',
|
||||
])
|
||||
expect(adminNavigation.find((item) => item.key === 'general')?.children?.map((item) => item.title)).toContain('快递公司')
|
||||
expect(adminNavigation.find((item) => item.key === 'general')?.children?.map((item) => item.title)).toContain('下载中心')
|
||||
expect(adminNavigation.find((item) => item.key === 'system')?.children?.map((item) => item.title)).toEqual([
|
||||
'用户管理',
|
||||
'角色权限',
|
||||
'菜单权限',
|
||||
'租户管理',
|
||||
'品牌设置',
|
||||
])
|
||||
})
|
||||
|
||||
@@ -42,9 +75,12 @@ describe('adminNavigation', () => {
|
||||
const paths = leaves.map((item) => item.path)
|
||||
const permissions = leaves.flatMap((item) => item.permission ? [item.permission] : [])
|
||||
|
||||
expect(paths).not.toContain('/dashboard')
|
||||
expect(paths).not.toContain('/prototype/finance/profit-report')
|
||||
expect(paths).not.toContain('/prototype/system-management/brand-settings')
|
||||
expect(paths).toContain('/dashboard')
|
||||
expect(paths).toContain('/orders/first-leg')
|
||||
expect(paths).toContain('/first-leg-pricing/customer-rules')
|
||||
expect(paths).toContain('/downloads')
|
||||
expect(paths).toContain('/prototype/finance/profit-report')
|
||||
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)
|
||||
@@ -59,11 +95,33 @@ describe('adminNavigation', () => {
|
||||
expect(paths).toContain('/system/permissions')
|
||||
expect(paths).not.toContain('/prototype/finance/profit-report')
|
||||
expect(paths).not.toContain('/customers')
|
||||
expect(filtered.map((item) => item.title)).toEqual(['通用'])
|
||||
expect(filtered).not.toBe(adminNavigation)
|
||||
expect(filtered.find((item) => item.key === 'system')).not.toBe(adminNavigation.find((item) => item.key === 'system'))
|
||||
expect(filtered[0]).not.toBe(adminNavigation.find((item) => item.key === 'general'))
|
||||
expect(JSON.stringify(adminNavigation, (key, value) => key === 'icon' ? '[icon]' : value)).toBe(sourceSnapshot)
|
||||
})
|
||||
|
||||
it('keeps hidden prototype nodes out of the live menu while preserving implemented placements', () => {
|
||||
const filtered = filterAdminNavigation(adminNavigation, new Set([
|
||||
'platform:firstleg:inbound:list',
|
||||
'platform:express:list',
|
||||
'platform:counterparty:list',
|
||||
'platform:warehouse:list',
|
||||
]))
|
||||
const paths = getNavigationLeaves(filtered).map((item) => item.path)
|
||||
|
||||
expect(filtered.map((item) => item.title)).toEqual(['国内仓', '供应商中心', '通用'])
|
||||
expect(paths).toEqual([
|
||||
'/inbounds',
|
||||
'/master-data/express-companies',
|
||||
'/master-data/counterparties',
|
||||
'/warehouses',
|
||||
])
|
||||
expect(paths).not.toContain('/dashboard')
|
||||
expect(paths).not.toContain('/orders/first-leg')
|
||||
expect(paths).not.toContain('/prototype/finance/profit-report')
|
||||
})
|
||||
|
||||
it('keeps the merged customer entry for existing review-only roles', () => {
|
||||
const filtered = filterAdminNavigation(adminNavigation, new Set(['platform:customer:review']))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user