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

5.5 KiB
Raw Blame History

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.