Files
unionflow-server-impl-quarkus/docs/archive/JACOCO_TESTS_MANQUANTS.md
dahoud 5f12ab3406 fix(audit): PorteeAudit.GLOBAL → PLATEFORME + archiver docs obsolètes
- AuditService.logMembreDesactive : PorteeAudit.GLOBAL n'existe pas dans l'enum,
  remplacé par PLATEFORME (même sémantique — audit admin plateforme)
- docs/archive/ : archivé AUDIT_MIGRATIONS_PRECISE, CONSOLIDATION_MIGRATIONS_FINALE,
  NETTOYAGE_MIGRATIONS_RAPPORT, TESTS_CONNUS_EN_ECHEC, JACOCO_TESTS_MANQUANTS
- docs/FLYWAY_MIGRATIONS_GUIDE.md : consolidé depuis AUDIT_MIGRATIONS.md
2026-04-16 09:31:14 +00:00

77 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# JaCoCo 100 % Tests ajoutés et suites restantes
## Ce qui a été fait
### 1. GlobalExceptionMapper (100 % branches)
- **Fichier :** `src/main/java/.../exception/GlobalExceptionMapper.java`
- **Modifs :** `@ApplicationScoped` pour linjection en test ; ordre des `instanceof` dans `mapJsonException` : **InvalidFormatException avant MismatchedInputException** (InvalidFormatException étend MismatchedInputException).
- **Tests ajoutés dans** `GlobalExceptionMapperTest.java` :
- `mapRuntimeException` : RuntimeException, IllegalArgumentException, IllegalStateException, NotFoundException, WebApplicationException (message non vide, null, vide), fallback 500.
- `mapBadRequestException` : message présent, message null.
- `mapJsonException` : MismatchedInputException, InvalidFormatException, JsonMappingException, JsonParseException (cas par défaut), avec sous-classes/stubs pour les constructeurs Jackson protégés.
- `buildResponse` : délégation 3 args → 4 args ; message null ; details null.
### 2. IdConverter (package util)
- **Fichier de test :** `src/test/java/.../util/IdConverterTest.java`
- Couverture : `longToUUID` (null, membre, organisation, cotisation, evenement, demandeaide, inscriptionevenement, type inconnu, casse), `uuidToLong` (null, valeur), `organisationIdToUUID`, `membreIdToUUID`, `cotisationIdToUUID`, `evenementIdToUUID`.
### 3. UnionFlowServerApplication
- **Fichier de test :** `src/test/java/.../UnionFlowServerApplicationTest.java`
- Vérification de linjection du bean (pas de couverture de `main()` ni `run()` qui appellent `Quarkus.waitForExit()`).
### 4. AuthCallbackResource
- Les tests REST sur `/auth/callback` ont été retirés : en environnement test la ressource renvoie **500** (exception dans le bloc try ou en aval). À retester après correction de la cause (ex. config OIDC, format de la réponse, etc.).
---
## État actuel de la couverture (sans exclusions)
- **Instructions :** ~44 %
- **Branches :** ~32 %
- **Lignes :** ~46 %
- **Méthodes :** ~55 %
- **Seuils configurés :** 1,00 (100 %) pour LINE, BRANCH, INSTRUCTION, METHOD sur le BUNDLE → le **check JaCoCo échoue**.
---
## Suites de tests à ajouter pour viser 100 %
Les chiffres cidessous sont issus du rapport JaCoCo (index par package). Pour chaque package, il faut ajouter ou compléter des tests jusquà couvrir toutes les lignes/branches/méthodes.
| Package | Instructions | Branches | À faire |
|--------|---------------|----------|--------|
| `dev.lions.unionflow.server.service` | 35 % | 21 % | ~40 classes, couvrir tous les services (DashboardServiceImpl, MembreService, CotisationService, etc.) |
| `dev.lions.unionflow.server.resource` | 38 % | 41 % | ~33 resources REST : chaque endpoint et chaque branche (erreurs, paramètres, pagination) |
| `dev.lions.unionflow.server.repository` | 59 % | 46 % | ~32 repositories : requêtes personnalisées, critères, cas null |
| `dev.lions.unionflow.server.entity` | 70 % | 50 % | ~42 entités : getters/setters, `@PrePersist`, méthodes métier, listeners |
| `dev.lions.unionflow.server.service.mutuelle.credit` | 7 % | 0 % | DemandeCreditService : tous les cas et branches |
| `dev.lions.unionflow.server.service.mutuelle.epargne` | 18 % | 0 % | TransactionEpargneService, etc. |
| `dev.lions.unionflow.server.security` | 30 % | - | RoleDebugFilter, autres filtres : tests dintégration (filtre + requête REST) |
| `dev.lions.unionflow.server.mapper` (racine + sous-packages) | 3595 % | 2164 % | Compléter les branches manquantes dans les mappers MapStruct (null, listes vides, champs optionnels) |
| `de.lions.unionflow.server.auth` | 0 % | 0 % | AuthCallbackResource : corriger la 500 en test puis réécrire les tests REST |
| `dev.lions.unionflow.server.util` | 0 % → couvert | - | IdConverter : fait |
| `dev.lions.unionflow.server.client` | 0 % | - | UserServiceClient, RoleServiceClient : tests avec WireMock ou mock du client + services qui les utilisent |
| `dev.lions.unionflow.server` | 0 % | - | UnionFlowServerApplication : `main`/`run` non couverts (blocage sur `waitForExit`) |
En pratique, il faut :
- **Services :** pour chaque méthode publique, scénarios nominal, erreurs (exceptions, not found), paramètres null/optionnels, et chaque branche (if/else, try/catch).
- **Resources :** pour chaque `@GET`/`@POST`/…, au moins 200, 404, 400, 401/403 si applicable, et corps de requête/réponse.
- **Repositories :** tests avec base H2 et données de test pour chaque requête dérivée ou `@Query`.
- **Entités :** instanciation, setters, callbacks JPA, méthodes métier.
- **Mappers :** entité → DTO, DTO → entité, listes, champs null.
- **Filtres / clients :** soit tests dintégration (REST + filtre), soit tests unitaires avec mocks (ContainerRequestContext, client REST mocké).
---
## Recommandation
- **Option A Build vert avec seuils réalistes :**
Remonter temporairement les seuils JaCoCo (ex. 0,45 en LINE/INSTRUCTION, 0,32 en BRANCH) ou réintroduire des exclusions ciblées (entités, générés MapStruct, `*Application`) pour que la build passe, puis augmenter progressivement la couverture par packages.
- **Option B Viser 100 % sans exclusions :**
Continuer à ajouter des tests package par package en sappuyant sur le rapport HTML JaCoCo (`target/site/jacoco/index.html`) et sur ce fichier, jusquà atteindre 1,00 sur tout le bundle.
---
*Dernière mise à jour : suite aux ajouts GlobalExceptionMapper, IdConverter, UnionFlowServerApplication et correction de lordre `mapJsonException`.*