basicomptaMenuBuilder.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { describe, test, expect, vi, beforeEach } from 'vitest'
  2. import type { RuntimeConfig } from '@nuxt/schema'
  3. import type { AnyAbility } from '@casl/ability'
  4. import type { Router } from 'vue-router'
  5. import type { AccessProfile, organizationState } from '~/types/interfaces'
  6. import BasicomptaMenuBuilder from '~/services/layout/menuBuilder/basicomptaMenuBuilder'
  7. import { MENU_LINK_TYPE } from '~/types/enum/layout'
  8. let runtimeConfig: RuntimeConfig
  9. let ability: AnyAbility
  10. let organizationProfile: organizationState
  11. let accessProfile: AccessProfile
  12. let menuBuilder: BasicomptaMenuBuilder
  13. let router: Router
  14. beforeEach(() => {
  15. runtimeConfig = vi.fn() as any as RuntimeConfig
  16. ability = vi.fn() as any as AnyAbility
  17. organizationProfile = vi.fn() as any as organizationState
  18. accessProfile = vi.fn() as any as AccessProfile
  19. // @ts-ignore
  20. router = vi.fn() as Router
  21. menuBuilder = new BasicomptaMenuBuilder(
  22. runtimeConfig,
  23. ability,
  24. organizationProfile,
  25. accessProfile,
  26. router,
  27. )
  28. })
  29. describe('getMenuName', () => {
  30. test('validate name', () => {
  31. expect(menuBuilder.getMenuName()).toEqual('Basicompta')
  32. })
  33. })
  34. describe('build', () => {
  35. test('without admin, administratif, or financial manager access', () => {
  36. accessProfile.isAdminAccess = false
  37. accessProfile.isAdministratifManager = false
  38. accessProfile.isFinancialManager = false
  39. expect(menuBuilder.build()).toEqual(null)
  40. })
  41. test('with admin access', () => {
  42. accessProfile.isAdminAccess = true
  43. expect(menuBuilder.build()).toEqual({
  44. label: 'basicompta_admin',
  45. icon: { name: 'fas fa-suitcase' },
  46. to: 'https://mydomain.com/#/basicompta',
  47. type: MENU_LINK_TYPE.V1,
  48. active: false,
  49. })
  50. })
  51. test('with administratif manager access', () => {
  52. accessProfile.isAdminAccess = false
  53. accessProfile.isAdministratifManager = true
  54. expect(menuBuilder.build()).toEqual({
  55. label: 'basicompta_admin',
  56. icon: { name: 'fas fa-suitcase' },
  57. to: 'https://mydomain.com/#/basicompta',
  58. type: MENU_LINK_TYPE.V1,
  59. active: false,
  60. })
  61. })
  62. test('with financial manager access', () => {
  63. accessProfile.isAdminAccess = false
  64. accessProfile.isAdministratifManager = false
  65. accessProfile.isFinancialManager = true
  66. expect(menuBuilder.build()).toEqual({
  67. label: 'basicompta_admin',
  68. icon: { name: 'fas fa-suitcase' },
  69. to: 'https://mydomain.com/#/basicompta',
  70. type: MENU_LINK_TYPE.V1,
  71. active: false,
  72. })
  73. })
  74. })