Browse Source

Merge branch 'feature/V8-7158' into release/2.5

# Conflicts:
#	services/layout/menuBuilder/basicomptaMenuBuilder.ts
#	tests/units/services/layout/menuBuilder/basicomptaMenuBuilder.test.ts
Vincent 7 months ago
parent
commit
9834123460

+ 4 - 4
services/layout/menuBuilder/basicomptaMenuBuilder.ts

@@ -11,18 +11,18 @@ export default class BasicomptaMenuBuilder extends AbstractMenuBuilder {
   build(): MenuItem | null {
     // cf droit : https://ressources-opentalent.atlassian.net/wiki/spaces/SPEC/pages/32637034/Acc+s+basi+compta+pour+les+structures+de+la+CMF#Acces-a-Basicompta-pour-les-administrateurs
     if (
-      this.accessProfile.isAdminAccess ||
+      (this.accessProfile.isAdminAccess ||
       this.accessProfile.isAdministratifManager ||
-      this.accessProfile.isFinancialManager
+      this.accessProfile.isFinancialManager)
+      && this.ability.can('display', 'basicompta_page')
     ) {
       return this.createItem(
         'basicompta_admin',
         { name: 'fas fa-suitcase' },
         '/basicompta',
-        MENU_LINK_TYPE.V1
+        MENU_LINK_TYPE.V1,
       )
     }
-
     return null
   }
 }

+ 1 - 1
services/layout/menuBuilder/mainMenuBuilder.ts

@@ -34,10 +34,10 @@ export default class MainMenuBuilder extends AbstractMenuBuilder {
       this.buildSubmenu(DonorsMenuBuilder),
       this.buildSubmenu(RewardsMenuBuilder),
       this.buildSubmenu(WebsiteAdminMenuBuilder),
+      this.buildSubmenu(BasicomptaMenuBuilder),
       this.buildSubmenu(CotisationsMenuBuilder),
       this.buildSubmenu(StatsMenuBuilder),
       this.buildSubmenu(Admin2iosMenuBuilder),
-      this.buildSubmenu(BasicomptaMenuBuilder),
     ].filter((m: MenuItem | MenuGroup | null) => m !== null)
 
     if (children.length > 1) {

+ 15 - 0
tests/units/services/layout/menuBuilder/basicomptaMenuBuilder.ts → tests/units/services/layout/menuBuilder/basicomptaMenuBuilder.test.ts

@@ -21,6 +21,8 @@ beforeEach(() => {
   // @ts-ignore
   router = vi.fn() as Router
 
+  runtimeConfig.baseUrlAdminLegacy = 'https://mydomain.com/'
+
   menuBuilder = new BasicomptaMenuBuilder(
     runtimeConfig,
     ability,
@@ -37,7 +39,13 @@ describe('getMenuName', () => {
 })
 
 describe('build', () => {
+  test('without ability', () => {
+    ability.can = vi.fn((action: string, subject: string) => false)
+    expect(menuBuilder.build()).toEqual(null)
+  })
+
   test('without admin, administratif, or financial manager access', () => {
+    ability.can = vi.fn((action: string, subject: string) => true)
     accessProfile.isAdminAccess = false
     accessProfile.isAdministratifManager = false
     accessProfile.isFinancialManager = false
@@ -45,29 +53,35 @@ describe('build', () => {
   })
 
   test('with admin access', () => {
+    ability.can = vi.fn((action: string, subject: string) => true)
     accessProfile.isAdminAccess = true
     expect(menuBuilder.build()).toEqual({
       label: 'basicompta_admin',
       icon: { name: 'fas fa-suitcase' },
       to: 'https://mydomain.com/#/basicompta',
       type: MENU_LINK_TYPE.V1,
+      target: '_self',
       active: false,
     })
   })
 
   test('with administratif manager access', () => {
+    ability.can = vi.fn((action: string, subject: string) => true)
     accessProfile.isAdminAccess = false
     accessProfile.isAdministratifManager = true
+
     expect(menuBuilder.build()).toEqual({
       label: 'basicompta_admin',
       icon: { name: 'fas fa-suitcase' },
       to: 'https://mydomain.com/#/basicompta',
       type: MENU_LINK_TYPE.V1,
+      target: '_self',
       active: false,
     })
   })
 
   test('with financial manager access', () => {
+    ability.can = vi.fn((action: string, subject: string) => true)
     accessProfile.isAdminAccess = false
     accessProfile.isAdministratifManager = false
     accessProfile.isFinancialManager = true
@@ -76,6 +90,7 @@ describe('build', () => {
       icon: { name: 'fas fa-suitcase' },
       to: 'https://mydomain.com/#/basicompta',
       type: MENU_LINK_TYPE.V1,
+      target: '_self',
       active: false,
     })
   })