• 8 hours
  • Hard

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 2/18/22

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

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

  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.

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 :

  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.

Rendez ces 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é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 :

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

  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.

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 :

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

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 :

  1. L'import dans Postman fonctionne.

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

Example of certificate of achievement
Example of certificate of achievement