From cffad9475aa14329db059a5b6b65dee9061b0a83 Mon Sep 17 00:00:00 2001 From: felix-vi Date: Sun, 14 Jun 2026 21:43:17 +0200 Subject: [PATCH] =?UTF-8?q?:white=5Fcheck=5Fmark:=20test=20pass=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev62/mylibrary/commande/CommandeDTO.java | 4 +- .../commande/converter/CommandeConverter.java | 4 ++ .../exception/CommandeNotFoundException.java | 13 +++++++ .../commande/usecase/CommandeUseCase.java | 38 +++++++++++++++++-- .../valid/CommandeNotFoundEsceptionTest.java | 1 + .../commande/usecase/TestCommandeUseCase.java | 1 + 6 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/CommandeNotFoundException.java diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeDTO.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeDTO.java index dd2f14c..5aad692 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeDTO.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeDTO.java @@ -16,10 +16,8 @@ public class CommandeDTO { private String codePostal; private String pays; private String modePaiement; - - private UUID commandeId ; - private double montantTotal ; + private double montantTotal ; private Integer pointsFideliteGagnes ; } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverter.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverter.java index d5ecd27..2d85e37 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverter.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverter.java @@ -49,6 +49,10 @@ public final class CommandeConverter { .codePostal(commande.getCodePostal()) .pays(commande.getPays()) .modePaiement(commande.getModePaiement()) + .commandeId(commande.getCommandeId()) + .clientId(commande.getClientId()) + .montantTotal(commande.getMontantTotal()) + .pointsFideliteGagnes(commande.getPointsFideliteGagnes()) .build(); } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/CommandeNotFoundException.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/CommandeNotFoundException.java new file mode 100644 index 0000000..251706e --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/CommandeNotFoundException.java @@ -0,0 +1,13 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception; + +import java.text.MessageFormat; +import java.util.UUID; + +public class CommandeNotFoundException extends RuntimeException { + + public static final String THE_COMMANDE_WITH_ID_DOES_NOT_EXIST_MESSAGE = "The commande with id {0} does not exist"; + + public CommandeNotFoundException(UUID uuid) { + super(MessageFormat.format(THE_COMMANDE_WITH_ID_DOES_NOT_EXIST_MESSAGE, uuid)); + } +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java index b94841d..41d65fa 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java @@ -1,13 +1,12 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.usecase; -import fr.iut_fbleau.but3.dev62.mylibrary.book.BookDTO; -import fr.iut_fbleau.but3.dev62.mylibrary.book.converter.BookConverter; -import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Book; import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeDTO; import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.converter.CommandeConverter; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.CommandeNotFoundException; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidCommandeException; import fr.iut_fbleau.but3.dev62.mylibrary.commande.repository.CommandeRepository; import fr.iut_fbleau.but3.dev62.mylibrary.commande.validator.CommandeValidator; @@ -38,4 +37,37 @@ public class CommandeUseCase { return optionalCommande.map(CommandeConverter::toDTO); } + public CommandeDTO updateCommande(UUID uuid, CommandeInfo commandeInfo, AdresseInfo adresseInfo) + throws CommandeNotFoundException, NotValidCommandeException { + CommandeValidator.validate(commandeInfo); + CommandeValidator.validate(adresseInfo); + Commande commandeByUUID = getCommandeIfDoesNotExistThrowCommandeNotFoundException( + uuid); + Commande commande = Commande.builder() + .clientId(commandeByUUID.getClientId()) + .lignesCommande(commandeInfo.listeLigne()) + .rue(adresseInfo.rue()) + .ville(adresseInfo.ville()) + .codePostal(adresseInfo.codePostal()) + .pays(adresseInfo.pays()) + .modePaiement(commandeInfo.modePayement()) + .commandeId(uuid) + .build(); + Commande updatedCommande = commandeRepository.save(commande); + return CommandeConverter.toDTO(updatedCommande); + } + + public void deleteCommande(UUID uuid) throws CommandeNotFoundException { + Commande commandeToDelete = getCommandeIfDoesNotExistThrowCommandeNotFoundException(uuid); + this.commandeRepository.delete(commandeToDelete); + } + + private Commande getCommandeIfDoesNotExistThrowCommandeNotFoundException(UUID uuid) + throws CommandeNotFoundException { + Optional optionalCommandeById = commandeRepository.findById(uuid); + if (optionalCommandeById.isEmpty()) { + throw new CommandeNotFoundException(uuid); + } + return optionalCommandeById.get(); + } } diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/CommandeNotFoundEsceptionTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/CommandeNotFoundEsceptionTest.java index 44b103b..946af6b 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/CommandeNotFoundEsceptionTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/CommandeNotFoundEsceptionTest.java @@ -1,5 +1,6 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.valid; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.CommandeNotFoundException; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/TestCommandeUseCase.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/TestCommandeUseCase.java index 6550a81..6e81a80 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/TestCommandeUseCase.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/TestCommandeUseCase.java @@ -2,6 +2,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.usecase; import fr.iut_fbleau.but3.dev62.mylibrary.commande.*; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.CommandeNotFoundException; import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidCommandeException; import fr.iut_fbleau.but3.dev62.mylibrary.commande.repository.CommandeRepository; import org.junit.jupiter.api.BeforeEach;