You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Revue des tests du projet (30 tests, 8 fichiers). Les 22 tests de commandes (get, login, logout, search, notifications/*) ne testent que le manifest oclif compilé dans dist/ (Config.load().findCommand(...)), jamais run(). Preuve : en supprimant dist/, ces tests échouent — ils ne lisent donc jamais src/. Modifier la logique métier dans src/commands/** sans rebuild laisse la suite verte.
Coverage réelle mesurée avec c8 (le seul outil fiable ici, vu l'ESM + loader tsx que nyc ne voit pas) : 22.58% lignes global, 0% sur base-command.ts, toutes les commandes, et schemas/notification.ts.
À faire
Ajouter @oclif/test en devDependency (fournit runCommand, qui exécute réellement run() avec mocks/stubs d'API)
Réécrire les 22 tests "metadata" en tests de comportement réel (mock de l'API, assertion sur la sortie/les effets)
Ajouter des tests pour base-command.ts (auth, chargement/sauvegarde userConfig, initApiCore(), listener tokenChanged) — cœur transversal actuellement à 0%
Ajouter des tests pour la logique pure sans I/O, actuellement zéro couverture :
src/commands/login/index.ts : timeConvert(), getClientId() (décodage base64, cas anonymous)
src/commands/get/index.ts : branchement afpshortid (id.length===7) vs UNO, mode --extended
src/commands/search/index.ts:45-49 : résolution des fields, émission NDJSON sous --json
src/commands/notifications/services/create.ts : JSON.parse + validation Zod par type de service
Supprimer les 7 doublons should be loadable strictement subsumés par un test voisin (get, login, search, notifications/services, notifications/subscriptions)
Configurer c8 pour le coverage : ajouter en devDependency, script test:coverage (c8 --reporter=text --reporter=html --all --include 'src/**/*.ts' -- mocha --forbid-only "test/**/*.test.ts"), et un .c8rc.json (all: true, include: ["src/**/*.ts"])
Retirer @types/chai des devDependencies (dépendance morte, aucun fichier de test n'importe chai, tous utilisent node:assert)
Ajouter des tests pour src/components/table.ts (lignes 172-300 non couvertes : sort, filter, --columns, troncature de largeur)
Contexte
Revue effectuée le 2026-08-27 (agent claude), voir historique de conversation pour le détail complet.
Constat
Revue des tests du projet (30 tests, 8 fichiers). Les 22 tests de commandes (
get,login,logout,search,notifications/*) ne testent que le manifest oclif compilé dansdist/(Config.load().findCommand(...)), jamaisrun(). Preuve : en supprimantdist/, ces tests échouent — ils ne lisent donc jamaissrc/. Modifier la logique métier danssrc/commands/**sans rebuild laisse la suite verte.Coverage réelle mesurée avec
c8(le seul outil fiable ici, vu l'ESM + loadertsxquenycne voit pas) : 22.58% lignes global, 0% surbase-command.ts, toutes les commandes, etschemas/notification.ts.À faire
@oclif/testen devDependency (fournitrunCommand, qui exécute réellementrun()avec mocks/stubs d'API)base-command.ts(auth, chargement/sauvegardeuserConfig,initApiCore(), listenertokenChanged) — cœur transversal actuellement à 0%src/commands/login/index.ts:timeConvert(),getClientId()(décodage base64, casanonymous)src/commands/get/index.ts: branchementafpshortid(id.length===7) vs UNO, mode--extendedsrc/commands/search/index.ts:45-49: résolution desfields, émission NDJSON sous--jsonsrc/commands/notifications/services/create.ts:JSON.parse+ validation Zod par type de servicesrc/schemas/notification.ts: schémas Zod (HttpServiceDataSchema,MailServiceDataSchema,JmsServiceDataSchema,SqsServiceDataSchema), testables unitairement sans I/Oshould be loadablestrictement subsumés par un test voisin (get,login,search,notifications/services,notifications/subscriptions)c8pour le coverage : ajouter en devDependency, scripttest:coverage(c8 --reporter=text --reporter=html --all --include 'src/**/*.ts' -- mocha --forbid-only "test/**/*.test.ts"), et un.c8rc.json(all: true,include: ["src/**/*.ts"])@types/chaides devDependencies (dépendance morte, aucun fichier de test n'importechai, tous utilisentnode:assert)src/components/table.ts(lignes 172-300 non couvertes : sort, filter,--columns, troncature de largeur)Contexte
Revue effectuée le 2026-08-27 (agent claude), voir historique de conversation pour le détail complet.