Aller au contenu

Upsert des unit tests

Minimalisme : tester la logique pure custom, rien d'autre. Jamais de commit. Les tests s'ajoutent via ce skill ou sur demande explicite — jamais spontanément pendant une implem (cf. api-conventions.mdc §Tests).

Étape 0 — Charger les rules

  • .cursor/rules/test-conventions.mdc — stack Vitest, « tester le custom, pas la lib », AI-slop checklist, naming des fichiers
  • projects/api/.cursor/rules/api-conventions.mdc §Business — fonctions pures, 100% couverture

Étape 1 — Collecter le scope

  • Cible nommée par l'utilisateur → la prendre telle quelle
  • Sinon pending : git status --short + git diff HEAD ; branche : git diff develop...HEAD

Étape 2 — Filtrer les cibles (logique pure uniquement)

Éligible :

  • business/100% couverture exigée (seule couche où les unit tests sont obligatoires)
  • Helpers purs de lib/, refinements de validators (.and(...)), mappers purs

Red flag stop : le test exigerait vi.mock d'un module interne, de la DB ou d'un provider (ex. notif Slack dans un service) → mauvaise cible. Si la cible est un controller / cron / worker / webhook, proposer /upsert-integration-tests ; sinon pas de test. Ne jamais écrire un test d'intégration déguisé en unitaire.

Étape 3 — Écrire

  • Placement + naming fichiers : cf. test-conventions §Vitest (__tests__/ colocalisé)
  • Scope et frugalité : cf. test-conventions §Scope
  • Pas de mocks ; horloge → la fonction prend now en param (cf. api-conventions §Business)
  • Appliquer l'AI-slop checklist de test-conventions.mdc

Étape 4 — Lancer

  • Run ciblé : pnpm --filter @bricks/api test:unit -- <fichier> (ou le --filter du package touché)
  • Cible business/ : vérifier que chaque branche de la fonction est exercée (100%)