Aller au contenu



build · gpt-5.3-codex 

PD-105 — Revue des Tests

Résumé

Critère Statut
Couverture nominale
Couverture erreurs
Qualité assertions ⚠️
Isolation tests ⚠️

Verdict : ⚠️ RÉSERVES

Points positifs

  • Bonne couverture globale sur les modules PD-105 (services/notifications très élevé, notificationStore à 100% statements).
  • Les invariants métier clés sont explicitement testés (iOS only, déduplication, mark-as-read, navigation/fallback).
  • Les cas d’erreur importants sont présents: permissions refusées, échec token, fallback ACCESS_REVOKED, données manquantes.
  • Les assertions visibles sont plutôt spécifiques (toBeNull, not.toHaveBeenCalled, checks de navigation/fallback), pas uniquement des assertions vagues.
  • La séparation par responsabilités est saine: service, store, handlers, resolver testés indépendamment.

Points à améliorer

ID Description Fichier Gravité
T-01 Renforcer l’isolation d’environnement (Platform.OS, singleton service) avec restauration systématique en afterEach pour éviter les effets de bord inter-tests. notificationService.spec.ts MAJEUR
T-02 Sur les cas permissions refusées/échec token, ajouter des assertions de non-régression sur les appels exacts (requestPermissionsAsync, getExpoPushTokenAsync, listeners) et le nombre d’invocations. notificationService.spec.ts MINEUR
T-03 Le test de sérialisation PQueue doit prouver l’ordre strict et l’absence de concurrence (timestamps/ordre d’exécution), pas seulement “a été appelé”. notificationStore.spec.ts MAJEUR
T-04 Le test de persistance Zustand doit vérifier un cycle complet save/reload (réhydratation) et cohérence notifications + unreadCount après redémarrage simulé. notificationStore.spec.ts MAJEUR
T-05 Ajouter un test d’idempotence pour handleNotificationResponse (double tap / événement répété) afin de sécuriser markAsRead et navigation unique. handlers.spec.ts MINEUR
T-06 Compléter les edge cases resolver avec valeurs invalides (targetId vide, type avec espaces, payload partiel) pour durcir la robustesse parsing. resolver.spec.ts MINEUR

Couverture par invariant

Invariant Tests Statut
INV-105-01 Rejet initialisation Android (TC-NOTIF-02)
INV-105-03 Notification des listeners token + unsubscribe (TC-NOTIF-05)
INV-105-05 Silent notification sans log d’alerte (handleForeground)
INV-105-08 Déduplication store + handlers
INV-105-09 markAsRead décrémente sans passer sous 0
INV-105-10 Navigation contexte cible + marquage lu sur réponse

Globalement, la suite est solide et proche d’un niveau CONFORME, mais je maintiens RÉSERVES tant que l’isolation (état global/singleton) et les preuves d’ordonnancement/persistance ne sont pas durcies.