Isi-APP Docs fonctionnelles
Toutes les docs
Markdown brut
Tests — Documentation Fonctionnelle
Actif dev functional Revu le 2026-03-13 dev/tests.md

Tests — Documentation Fonctionnelle

Stratégie de tests de l'application ISI-APP : organisation, commandes et patterns principaux.


Vue d'ensemble

ISI-APP utilise PHPUnit 12 comme framework de test unique. La suite compte plus de 1 100 tests couvrant l'authentification, les accès, les middlewares et les fonctionnalités métier. Les tests s'exécutent sur une base de données MySQL dédiée avec rollback automatique entre chaque test (aucune donnée persistée).

Accès

Les tests sont réservés aux développeurs. Ils s'exécutent en ligne de commande depuis la racine du projet.

Commandes principales

Commande Usage
php artisan test --compact Lancer toute la suite
php artisan test --compact --filter=NomDuTest Lancer un seul test
php artisan test --compact tests/Feature/MonFichier.php Lancer un fichier

Avant de finaliser : vendor/bin/duster fix --dirty pour formater le code.

Organisation des tests

Les tests sont organisés en deux suites :

  • Unit (tests/Unit/) — tests unitaires isolés
  • Feature (tests/Feature/) — tests fonctionnels avec requêtes HTTP

Chaque domaine dispose de son propre dossier : Auth/, Store/, etc.

Patterns de tests

Authentification et session

Tous les tests nécessitant un utilisateur connecté utilisent le trait AuthenticatesUser qui expose trois méthodes : createTestUser() (crée un utilisateur de test), loginTestUser() (POST sur /login) et setupTestSession() (construit la session directement sans passer par le flow de connexion).

Patterns courants par type de fonctionnalité

Fonctionnalité Ce qui est testé
Liste / tableau Tri, recherche, pagination, filtres
Création Formulaire rempli → enregistrement en base, modal fermée, liste rafraîchie
Modification Formulaire pré-rempli → mise à jour en base, soft delete respecté
Suppression Confirmation SweetAlert → dtdel mis à jour, élément masqué de la liste
Export Fichier généré (Excel / PDF), format valide
Import Prévisualisation correcte, changements appliqués après confirmation
Filtres Résultats cohérents avec les options sélectionnées
Multi-tenant Seules les données du tenant courant sont visibles
ACL Les utilisateurs sans droit ne voient rien ou obtiennent une erreur 403

Edge cases à couvrir systématiquement

  • Recherche vide : tous les éléments affichés
  • Champ obligatoire manquant : message de validation visible
  • Export sur un grand jeu de données (1 000+ lignes)
  • Import d'un enregistrement en double : erreur ou mise à jour selon la règle métier
  • Soft delete : les éléments supprimés ne réapparaissent pas dans les listes
  • Isolation multi-tenant : un utilisateur ne peut pas accéder aux données d'un autre tenant

Checklist avant mise en production

  • [ ] Toutes les opérations CRUD testées (créer, lire, modifier, supprimer)
  • [ ] Tous les filtres appliqués correctement
  • [ ] La recherche couvre toutes les colonnes concernées
  • [ ] Export Excel / PDF fonctionnel
  • [ ] Prévisualisation d'import correcte, changements appliqués
  • [ ] Pagination (première, dernière, suivante, précédente)
  • [ ] Tri des colonnes (ascendant / descendant)
  • [ ] Soft delete : l'élément disparaît après suppression
  • [ ] Multi-tenant : aucune fuite de données entre tenants
  • [ ] ACL : les utilisateurs sans droits ne voient rien

Voir aussi

  • Documentation technique : .claude/technical-docs/dev/tests.md
  • Patterns rapides : .claude/technical-docs/dev/test-patterns-quick-ref.md