-
Notifications
You must be signed in to change notification settings - Fork 322
Description
Votre demande de fonctionnalité est-elle liée à un problème ? Veuillez le décrire.
La classe DB.class est devenue une classe centrale et critique du système Jeedom, mais elle manque de tests unitaires robustes. Cette classe gère les interactions avec la base de données, les opérations CRUD, les hooks d'objets, et de nombreux comportements complexes. Sans tests appropriés, refactoriser cette classe pour améliorer sa maintenabilité et réduire sa complexité présente des risques importants de régression. De plus, l'absence de tests rend difficile la validation des modifications et l'ajout de nouvelles fonctionnalités.
Décrivez la solution que vous souhaitez
Je propose de créer une suite de tests complète pour la classe DB.class incluant :
- Tests des opérations CRUD de base : SELECT, INSERT, UPDATE, DELETE avec différents types de paramètres
- Tests des différents modes de fetch : FETCH_TYPE_ROW, FETCH_TYPE_ALL, avec différents fetch modes PDO
- Tests des hooks d'objets : preSave, postSave, preInsert, postInsert, preUpdate, postUpdate, encrypt, decrypt
- Tests des comportements avancés : gestion des objets changeables, objets identifiables, mode direct, mode replace
- Tests de gestion d'erreurs : mauvaises requêtes SQL, problèmes de connexion, violations de contraintes
- Tests des méthodes utilitaires : checksum, optimize, remove
- Système de mocking sophistiqué : ObjectMockBuilder pour simuler différents types d'objets avec leurs comportements
L'objectif final est de permettre une refactorisation sécurisée de cette classe critique en s'appuyant sur une couverture de tests exhaustive.
Contexte supplémentaire
Un travail préliminaire a déjà été effectué dans une PR de recherche qui démontre la faisabilité #2902 :
- Implémentation d'un système ObjectMockBuilder flexible permettant de créer des objets de test avec différents comportements
- Tests couvrant les principales fonctionnalités de DB::Prepare, DB::save, DB::remove, DB::checksum
- Gestion des transactions pour l'isolation des tests
- Tests des hooks et de leur ordre d'exécution
Cette suite de tests servira de base solide pour entreprendre la refactorisation de la classe DB.class, qui est devenue complexe au fil du temps mais reste essentielle au fonctionnement de Jeedom.