Retour à la leçon
Mission

Mission : rendre testable une logique métier enfouie dans un fichier de 400 lignes

Extraire la logique métier d'une route Express monolithique vers une architecture en couches injectable, et écrire un test unitaire du service sans base de données réelle.

Contexte

La route POST /users d'un fichier routes.js de 400 lignes fait tout d'un coup : elle lit req.body, exécute directement pool.query('SELECT * FROM users WHERE email = $1', [email]) pour vérifier les doublons, insère le nouvel utilisateur avec une autre requête SQL inline, puis appelle sendgrid.send(...) directement pour l'email de bienvenue. Écrire un test pour "un email déjà utilisé doit être rejeté" oblige actuellement à démarrer une vraie base PostgreSQL et un vrai compte SendGrid de test.