• 20 heures
  • Difficile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 12/12/2019

Entraînez-vous en améliorant et en testant un Microservice

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

À 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.

Dans un premier temps, forkez et clonez le projet depuis Github :

https://github.com/AmarMicroDev/Mcommerce-partie1

Puis implémentez les 2 méthodes suivantes dans  ProductController.java  :

  1. calculerMargeProduit , qui calcule la marge de chaque produit (différence entre prix d‘achat et prix de vente).

  2. 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

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 mises 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 founir le résultat pour votre testeur :

  1. Créez un dossier  TestsPostman à la racine de votre projet

  2. Dans Postman, créez une collection pour définir vos tests

  3. Faites une capture d'écran du résultat de l'exécution de la collection

  4. Exportez la collection au format JSON  dans le dossier  TestsPostman

  5. Commitez et poussez vers le dépôt GitHub

Livrables

Vérifiez bien que vous avez les éléments suivants :

  1. Les captures d'écran résultant de l'exécution des collections Postman

  2. Un fichier README.txt contenant l'URL du dépôt Git contenant votre code à jour 

Vérifiez votre travail

Créer 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 à URI http://localhost:9090/AdminProduits

Vérifiez que les critères suivants sont correctement appliqués :

  1. La classe ProductController contient une méthode calculerMargeProduit

  2. La méthode est correctement annotée, par exemple avec @GetMapping ou @RequestMapping

  3. Les données sont récupérées depuis la base de données via la couche DAO, par exemple en utilisant productDao.findAll()

  4. 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.

  5.  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émenter 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 :

  1. Une classe est créée dans le package com.ecommerce.microcommerce.web.exceptions; pour implémenter l'exception

  2. La classe définissant l'exception est annotée avec @ResponseStatus(HttpStatus.BAD_REQUEST)

  3. Le constructeur de la classe passe le message à la classe parent avec super(...)

  4. Dans la classe ProductController, un code est ajouté à la méthode ajouterProduit. Ce code lance l'exception si productAdded.getPrix() == 0

  5. L'ajout d'un produit avec un prix fixé à 0 génère bien le code de statut attendu

Mettre en oeuvre 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 :

  1. 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.

  2. La classe ProductController contient une méthode trierProduitsParOrdreAlphabetique() correctement annotée, par exemple avec  @GetMapping  ou  @RequestMapping

  3.  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).

Tester 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 :

  1. L'import dans Postman fonctionne

  2. Les tests se lancent et affichent le résultat attendu

Exemple de certificat de réussite
Exemple de certificat de réussite