Appearance
Tests
Environnement de test local (Docker)
Pour tester l'addin sans accès au staging Heriade, un environnement Docker complet est disponible. Il simule deux espaces de données (RH, Finance) avec un user de test.
Ce qui est déjà en place (ne pas recréer)
| Fichier | Rôle |
|---|---|
docker-compose.yml | Containers locaux : addin-db (5433), data-db (5435) |
sql/test/data-db/01_init.sql | Tables rh_employes + finance_transactions |
sql/test/data-db/02_seed.sql | 15 employés fictifs + 15 transactions budgétaires |
back/.env.test | Variables d'env pointant vers les containers locaux |
back/scripts/test-setup.mjs | Génère le token SSO de test + insère les external_databases dans addin-db |
Lancer l'environnement de test
bash
# 1. Démarrer les containers (une seule fois, les données persistent)
docker compose up -d
# 2. Générer le token SSO + seeder les espaces dans addin-db
cd back
node --env-file=.env.test scripts/test-setup.mjs
# → Copier le token affiché (chaîne eyJ...)
# 3. Backend en mode test (pointe vers les BDD Docker locales, pas staging)
node --env-file=.env.test node_modules/.bin/nest start --watchTester
Via curl :
bash
curl -H "Authorization: Bearer TON_TOKEN" http://localhost:3000/data-pivot/databasesVia Swagger : http://localhost:3000/api/docs → "Authorize" → coller le token.
Via l'addin : lancer yarn start dans addin/, l'addin pointe déjà vers localhost:3000 en dev.
Reset complet des données
bash
docker compose down -v # Supprime les volumes (données perdues)
docker compose up -d
cd back && node --env-file=.env.test scripts/test-setup.mjsCompte de test
| Champ | Valeur |
|---|---|
[email protected] | |
| UUID | aaaaaaaa-bbbb-cccc-dddd-000000000001 |
| Enterprise | Heriade Demo (id=1) |
| Role | Utilisateur (id=3) |
| Services autorisés | RH, Finance |
| Espaces disponibles | Espace RH (rh_employes), Espace Finance (finance_transactions) |
Le token généré est valide 1 an. Il est signé avec APP_ACCESS_TOKEN_SECRET défini dans back/.env.test.
Tests unitaires frontend
bash
cd addin
yarn test # Tous les tests
yarn test --watch # Mode watch
yarn test <pattern> # Filtrer par nom de fichierStructure actuelle des tests :
addin/__tests__/
├── shared/
│ ├── dataCache.test.ts
│ ├── errorUtils.test.ts
│ └── separator.test.ts
├── services/
│ ├── dynamicPivotManager.test.ts
│ ├── excelWriter.test.ts
│ └── pivotEngine.test.ts
└── composables/
├── useAutoSave.test.ts
└── usePresets.test.tsMocker Office.js
Excel est un global runtime absent dans jsdom. Le mocker en haut du fichier test :
typescript
(globalThis as any).Excel = {
run: jest.fn(async (callback: (context: any) => Promise<unknown>) => {
return callback({ workbook: mockWorkbook, sync: mockSync });
}),
HorizontalAlignment: { left: "Left", center: "Center" },
};Pattern withSetup (composables avec lifecycle)
typescript
import { createApp, defineComponent } from "vue";
function withSetup<T>(composableFn: () => T): T {
let result!: T;
const app = createApp(
defineComponent({
setup() {
result = composableFn();
return () => null;
},
})
);
app.mount(document.createElement("div"));
app.unmount();
return result;
}Attendre que onMounted se résolve avec deux await Promise.resolve() après l'appel.
Points d'attention
- Les alias
@/*(tsconfig) ne sont pas résolus dans Jest — utiliser les chemins relatifs. - CSS importé dans les composants Vue est mocké via
moduleNameMapper→styleMock.js. ts-loaderentranspileOnly: true→ lanceryarn lint && yarn testpour voir les erreurs de types.
