menu-regions.test.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import assert from 'node:assert/strict'
  2. import { groupMenusByRegion, resolveRegionMeta } from './menu-regions.js'
  3. assert.deepEqual(resolveRegionMeta('市场部'), {
  4. key: 'market',
  5. title: '市场部',
  6. hint: '存储现场',
  7. tone: 'market'
  8. })
  9. assert.deepEqual(resolveRegionMeta('OA工作流'), {
  10. key: 'oa',
  11. title: 'OA工作流',
  12. hint: '审批协同',
  13. tone: 'oa'
  14. })
  15. assert.equal(resolveRegionMeta('').key, 'other')
  16. assert.equal(resolveRegionMeta(null).tone, 'other')
  17. const menus = [
  18. {
  19. id: '1',
  20. title: '发起审批',
  21. groupTitle: 'OA工作流',
  22. path: '/pages/oa/start/index'
  23. },
  24. {
  25. id: '2',
  26. title: '预签约订单(专员)',
  27. groupTitle: '市场部',
  28. path: '/pages/market/webview/index?entry=specialist-presign'
  29. },
  30. {
  31. id: '3',
  32. title: '待办中心',
  33. groupTitle: 'OA工作流',
  34. path: '/pages/oa/pending/index'
  35. },
  36. {
  37. id: '4',
  38. title: '协议单(经理)',
  39. groupTitle: '市场部',
  40. path: '/pages/market/webview/index?entry=manager-protocol'
  41. },
  42. {
  43. id: '5',
  44. title: '孤立入口',
  45. path: '/pages/demo/index'
  46. }
  47. ]
  48. const regions = groupMenusByRegion(menus)
  49. assert.equal(regions.length, 3)
  50. assert.deepEqual(
  51. regions.map((r) => r.title),
  52. ['市场部', 'OA工作流', '其他']
  53. )
  54. assert.deepEqual(
  55. regions[0].menus.map((m) => m.id),
  56. ['2', '4']
  57. )
  58. assert.deepEqual(
  59. regions[1].menus.map((m) => m.id),
  60. ['1', '3']
  61. )
  62. assert.equal(regions[0].tone, 'market')
  63. assert.equal(regions[1].tone, 'oa')
  64. assert.equal(regions[2].tone, 'other')
  65. assert.deepEqual(groupMenusByRegion([]), [])
  66. console.log('menu-regions.test.js ok')