Closed dbourdette closed 11 years ago
un de mes test échoue car je n'arrive pas à persister Action du package fun.reco.
Je ne comprend pas non plus le but de certaines méthodes: -> Object updateProfile(Profile profile)
-> Object pushAction(Action action)
Pouvez voir avec Angela concernant le but de ces méthodes ? Vos 2 travaux en cours étant complémentaires, vous devez pouvoir vous entraider.
On modifie les 2 méthodes cités précédemment :
-> Profile updateProfile(Profile profile)
-> Action pushAction(Action action)
Dans que but ?
Quel est le sens de fun.reco.RecommendationFacadeService par rapport com.github.funreco.RecommendationFacade ?
fun.reco.RecommendationFacade devrait implémenter com.github.funreco.RecommendationFacade
Pour différencier votre implémentation de l'interface, vous pouvez préfixer ou suffixer, par exemple RecommendationFacadeImpl
Votre implémentation devrait être dans le package com.github.funreco.basic pour plus de cohérence avec le reste.
Le test unitaire doit être dans le même package que la classe testée.
fri1, act et o ne sont pas des noms de variables acceptables dans les tests unitaires.
J'ai effectué les changements pour les packages, et je suis désolé pour l'état de la classe test.
Pour ce qui ait de l'interface com.github.funreco.RecommendationFacade, elle utilise l'ancien modèle de données. Doit-on vraiment la relier à l'implémentation basique du futur moteur?
RecommendationFacade n'utilise pas l'ancien modèle de données mais le modèle de données publique, celui qui sert pour le service REST et l'interface web.
Vous pouvez regardez le schéma qui explique le découpage. Ce qui est ancien est dans le package legacy.
J'ai ajouté un test qui fonctionne testUpdateUnknownProfile dans RecommendationFacadeTests afin de vous montrer ce qu'il faut faire.
La ligne magique dans le test en groovy est
import com.github.funreco.Profile as PublicProfile
Elle permet de travailler facilement avec com.github.funreco.Profile et fun.reco.Profile sans renommer ces classes. Il serait mieux que ces classes aient des noms différents, mais on fait avec.
Le test est divisé en 3 parties.
// arrange
...
// act
...
// assert
...
Cela rend le test facile a lire.
Enfin le code dans la Facade, il prend le modèle de données publique (com.github.funreco) et le transcrit afin de le sauver en base.
A la suite de la création du modèle de données (#16), nous pouvons maintenant proposer une implémentation de RecommendationFacade.
Il faut donc créer une classe qui implémente les méthodes suivantes de RecommendationFacade :
Afin de tester leur bon fonctionnement, il faut écrire des tests unitaires.
Les autres méthodes peuvent retourner des UnsupportedOperationException pour le moment.
Il ne faut pas brancher cette classe sur l'interface graphique pour le moment car les 2 méthodes manquantes sont nécessaires.