Olivier Massot 3 mesiacov pred
rodič
commit
1203343933

+ 2 - 2
components/Layout/Header.vue

@@ -19,8 +19,8 @@ Contient entre autres le nom de l'organisation, l'accès à l'aide et aux préf
       </LayoutHeaderTitle>
     </v-toolbar-title>
 
-    <LayoutThemeSwitcher v-if="true" />
-    <!-- En attente validation PO -->
+    <LayoutThemeSwitcher v-if="false" />
+    <!-- En attente migration complète -->
 
     <LayoutHeaderUniversalCreationCreateButton
       v-if="showUniversalButton"

+ 4 - 1
nuxt.config.ts

@@ -247,7 +247,10 @@ export default defineNuxtConfig({
   ignore: [process.env.NUXT_ENV === 'prod' ? 'pages/dev/*' : ''],
 
   prepare: {
-    scripts: ['prepare/buildIndex.ts'],
+    scripts: [
+      'prepare/buildIndex.ts',
+      'prepare/compileAbilitiesConfig.ts'
+    ],
   },
 
   compatibilityDate: '2025-03-10',

+ 9 - 1
tests/units/services/layout/menuBuilder/basicomptaMenuBuilder.test.ts

@@ -49,7 +49,15 @@ describe('build', () => {
     accessProfile.isAdminAccess = false
     accessProfile.isAdministratifManager = false
     accessProfile.isFinancialManager = false
-    expect(menuBuilder.build()).toEqual(null)
+    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,
+      endOfSubsection: false,
+    })
   })
 
   test('with admin access', () => {

+ 7 - 1
tests/units/services/layout/menuBuilder/mainMenuBuilder.test.ts

@@ -20,6 +20,8 @@ import WebsiteAdminMenuBuilder from '~/services/layout/menuBuilder/websiteAdminM
 import CotisationsMenuBuilder from '~/services/layout/menuBuilder/cotisationsMenuBuilder'
 import StatsMenuBuilder from '~/services/layout/menuBuilder/statsMenuBuilder'
 import Admin2iosMenuBuilder from '~/services/layout/menuBuilder/admin2iosMenuBuilder'
+import BasicomptaMenuBuilder from '~/services/layout/menuBuilder/basicomptaMenuBuilder'
+import HelloAssoMenuBuilder from '~/services/layout/menuBuilder/helloAssoMenuBuilder'
 
 let runtimeConfig: RuntimeConfig
 let ability: AnyAbility
@@ -88,10 +90,14 @@ describe('build', () => {
     expect(menuBuilder.buildSubmenu).toBeCalledWith(StatsMenuBuilder)
     // @ts-ignore
     expect(menuBuilder.buildSubmenu).toBeCalledWith(Admin2iosMenuBuilder)
+    // @ts-ignore
+    expect(menuBuilder.buildSubmenu).toBeCalledWith(BasicomptaMenuBuilder)
+    // @ts-ignore
+    expect(menuBuilder.buildSubmenu).toBeCalledWith(HelloAssoMenuBuilder)
 
     expect(result.label).toEqual('main')
     expect(result.icon).toEqual(undefined)
-    expect((result.children ?? []).length).toEqual(13)
+    expect((result.children ?? []).length).toEqual(14)
   })
 
   test('return a single group', () => {

+ 18 - 2
tests/units/services/rights/abilityBuilder.test.ts

@@ -6,6 +6,22 @@ import AbilityBuilder from '~/services/rights/abilityBuilder'
 import { ABILITIES } from '~/types/enum/enums'
 import type OrganizationProfile from '~/models/Organization/OrganizationProfile'
 
+// Mock the abilities config to return only test data
+vi.mock('~/config/abilities/config-precompiled', () => {
+  return {
+    default: {
+      'subject1': {
+        action: 'display',
+        conditions: [{ function: 'accessHasAnyProfile', parameters: ['guardian'] }]
+      },
+      'subject2': {
+        action: 'display',
+        conditions: [{ function: 'organizationIsSchool' }]
+      }
+    }
+  }
+})
+
 let ability: MongoAbility
 let accessProfile: AccessProfile
 let organizationProfile: OrganizationProfile
@@ -109,8 +125,8 @@ describe('buildAbilitiesFromConfig', () => {
     abilityBuilder.hasConfigAbility = vi.fn(() => true)
 
     expect(abilityBuilder.buildAbilitiesFromConfig()).toEqual([
-      { action: 'read', subject: 'subject1', inverted: false },
-      { action: 'read', subject: 'subject2', inverted: false },
+      { action: 'display', subject: 'subject1', inverted: false },
+      { action: 'display', subject: 'subject2', inverted: false },
     ])
   })
 })