Rendu Projet Grimoire Club
ACKERMANN Mathieu TD34 - Projet 2025 : Grimoire Club
Refactorisation et corrections du projet Grimoire Club
Résumé
Cette merge request comprend une série d'améliorations et de corrections visant à améliorer la qualité du code, la maintenabilité et la robustesse des tests du projet Grimoire Club. Les modifications clés incluent l'extraction de la logique de duel dans une classe dédiée, la correction de bugs dans la logique métier et l'amélioration de la couverture des tests.
Modifications principales
1. Extraction de la logique de duel
- Création d'une classe
DuelService
dédiée à la gestion des duels entre sorciers - Implémentation du nouveau type de duel "mma" (mixed martial arts) pour comparer toutes les statistiques des sorciers
- Déplacement de la logique métier depuis
WizardClubService
versDuelService
2. Création de classes utilitaires
-
SpellUtils
: Gestion de la sérialisation/désérialisation des sorts -
SorcererMapper
: Conversion entre les résultats de base de données et les objets métier
3. Amélioration des DTOs (Data Transfer Objects)
- Création et mise à jour des classes DTO pour une meilleure séparation des responsabilités :
AddMemberDto
DuelRequestDto
BasicResponseDto
ClubResponseDto
SorcererDto
4. Correction de bugs critiques
-
Bug dans la logique de duel basé sur la connaissance :
- Correction d'une erreur dans
getKnowledgeWinner()
qui retournait incorrectement un gagnant au lieu d'un match nul lorsque les sorciers avaient la même puissance totale de sorts mais un nombre différent de sorts - Test ajouté pour vérifier ce scénario de match nul
- Correction d'une erreur dans
-
Problème de vérification dans les tests du contrôleur :
- Correction du test
shouldOrganizeDuel()
pour éviter d'appeler deux foisfetchSorcerer(1)
en utilisant des IDs différents pour les sorciers impliqués dans le duel
- Correction du test
5. Amélioration de la documentation
- Ajout et mise à jour de la documentation JavaDoc pour toutes les classes et méthodes publiques
- Amélioration des commentaires dans le code pour faciliter la compréhension
6. Refactorisation du controller
- Exposition de méthodes auxiliaires dans
WizardClubController
pour faciliter les tests - Utilisation cohérente des DTOs dans les endpoints REST
Tests
- Création de tests unitaires complets pour les nouveaux services :
DuelServiceTest
SpellUtilsTest
SorcererMapperTest
- Mise à jour des tests existants pour refléter les nouvelles structures de classes :
WizardClubServiceTest
WizardClubControllerTest
- Ajout de tests d'intégration pour valider le fonctionnement de bout en bout
Impact technique
- Meilleure séparation des responsabilités : Extraction de la logique métier dans des classes dédiées
- Meilleures pratiques de code : Utilisation de design patterns appropriés (DTO, Mapper, Service)
- Robustesse accrue : Tests complets pour tous les scénarios, y compris les cas limites
- Maintenabilité améliorée : Code plus modulaire et documentation complète
Comment tester
- Exécutez la suite complète de tests avec
mvn test
- Vérifiez en particulier les tests de duel pour vous assurer que tous les types de duel fonctionnent correctement
- Testez manuellement les endpoints REST avec les exemples de requêtes fournis dans la documentation