À vous de jouer !
Améliorez et testez le projet vu en cours !
Pour cette activité, vous allez reprendre et améliorer le projet du cours.
Puis implémentez les 2 méthodes suivantes dans ProductController.java
:
calculerMargeProduit
, qui calcule la marge de chaque produit (différence entre prix d‘achat et prix de vente).trierProduitsParOrdreAlphabetique
qui retournera la liste de tous les produits triés par nom croissant.
Ensuite, ajoutez à la méthode ajouterProduit
une condition afin de vérifier que le prix de vente n’est pas égal à 0.
Enfin, testez les 2 méthodes créées avec Postman.
Suivez ces consignes pour la réalisation
Partie 1 – Affichage de la marge
La méthode calculerMargeProduit
doit répondre à une requête GET sur l’URI /AdminProduits
. Les données doivent être récupérées depuis la base de données mise en place dans le projet.
Voici un exemple de réponse attendue :
{
"Product{id=1, nom='Ordinateur portable', prix=350}": 230,
"Product{id=2, nom='Aspirateur Robot', prix=500}": 300,
"Product{id=3, nom='Table de Ping Pong', prix=750}": 350
}
Partie 2 – Tri par ordre alphabétique
La méthode trierProduitsParOrdreAlphabetique doit impérativement faire appel à une méthode que vous allez ajouter dans ProductDao , qui utilise le nommage conventionné de Spring Data JPA pour générer automatiquement les requêtes. Voici le résultat à obtenir avec le contenu de la base de données du cours :
{
{
"id": 2,
"nom": "Aspirateur Robot",
"prix": 500,
"prixAchat": 200
},
{
"id": 1,
"nom": "Ordinateur portable",
"prix": 350,
"prixAchat": 120
},
{
"id": 3,
"nom": "Table de Ping Pong",
"prix": 750,
"prixAchat": 400
}
}
Partie 3 – Validation du prix de vente
Si le prix de vente est de 0, lancez une exception du nom de ProduitGratuitException
(à créer) qui retournera le bon code HTTP pour ce cas, avec un message explicatif que vous définirez.
Partie 4 – Test des méthodes créées
Suivez les étapes suivantes pour écrire la collection, l'exécuter et fournir le résultat pour votre testeur :
Créez un dossier
TestsPostman
à la racine de votre projet.Dans Postman, créez une collection pour définir vos tests.
Faites une capture d'écran du résultat de l'exécution de la collection.
Exportez la collection au format JSON dans le dossier
TestsPostman
.Commitez et poussez vers le dépôt GitHub.
Rendez ces livrables
Vérifiez bien que vous avez les éléments suivants :
Les captures d'écran résultant de l'exécution des collections Postman.
Un fichier README.txt contenant l'URL du dépôt Git contenant votre code à jour.
Vérifiez votre travail
Créez une opération REST de type GET dans un microservice
Ouvrez le fichier README.txt contenant l'URL du projet. Clonez le projet sur votre machine et ouvrez le fichier ProductController.java. Lancez le programme et accédez à l’URI http://localhost:9090/AdminProduits .
Vérifiez que les critères suivants sont correctement appliqués :
La classe ProductController contient une méthode calculerMargeProduit.
La méthode est correctement annotée, par exemple avec
@GetMapping
ou@RequestMapping
.Les données sont récupérées depuis la base de données via la couche DAO, par exemple en utilisant
productDao.findAll()
.Un Iterable est retourné, fournissant pour chaque clé le Produit et comme valeur associée la marge calculée. L'Iterable peut par exemple être un HashMap, ou une classe personnalisée.
L'appel de l'URI http://localhost:9090/AdminProduits retourne bien le JSON attendu (si le port utilisé est différent, adaptez l'URI).
Implémentez une Exception personnalisée pour le code de statut dans un microservice
Vous allez évaluer la capacité à implémenter une exception personnalisée permettant de renvoyer le code HTTP adapté à la situation.
Vérifiez que les critères suivants sont correctement appliqués :
Une classe est créée dans le package
com.ecommerce.microcommerce.web.exceptions;
pour implémenter l'exception.La classe définissant l'exception est annotée avec
@ResponseStatus(HttpStatus.BAD_REQUEST)
.Le constructeur de la classe passe le message à la classe parent avec
super(...)
.Dans la classe ProductController, un code est ajouté à la méthode ajouterProduit. Ce code lance l'exception si
productAdded.getPrix() == 0
.L'ajout d'un produit avec un prix fixé à 0 génère bien le code de statut attendu.
Mettez en œuvre une requête générée automatiquement par Spring Data JPA
Vous allez maintenant valider la capacité à créer une méthode en utilisant des mots clés, afin que Spring Data JPA génère automatiquement la requête.
Pour cela, dans ProductDAO.java, vérifiez qu'une méthode a été ajoutée à ProdictDAO.java.
Vérifiez que les critères suivants sont correctement appliqués :
La classe ProductDAO contient une méthode respectant le nommage conventionné, comme par exemple
List<Product> findAllByOrderByNom();
. Cette méthode ne définit pas de requête explicite en JPQL.La classe ProductController contient une méthode
trierProduitsParOrdreAlphabetique()
correctement annotée, par exemple avec@GetMapping
ou@RequestMapping
.L'appel de l'URI http://localhost:9090/TriProduits retourne bien les produits issus de la base de données, au format JSON, triés par ordre alphabétique du nom (si le port utilisé est différent, adaptez l'URI).
Testez un microservice avec Postman
Récupérez la collection Postman qui doit se trouver dans le dossier TestsPostman du dépôt que vous avez cloné.
Vérifiez que les critères suivants sont correctement appliqués :
L'import dans Postman fonctionne.
.Les tests se lancent et affichent le résultat attendu.