From 6e94316e4be2c36b19b4781a300cca6b9f50a2ce Mon Sep 17 00:00:00 2001 From: lebreton Date: Tue, 19 May 2026 16:49:05 +0200 Subject: [PATCH 01/23] =?UTF-8?q?cr=C3=A9ation=20premier=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orders/converter/OrdersConverterTest.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/orders/converter/OrdersConverterTest.java diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/orders/converter/OrdersConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/orders/converter/OrdersConverterTest.java new file mode 100644 index 0000000..639fc19 --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/orders/converter/OrdersConverterTest.java @@ -0,0 +1,40 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.Orders.converter; + +import org.junit.jupiter.api.Orders; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class OrdersConverterTest { + + + @Test + void TestConvertOrdersToDomain(){ + UUID uuid = UUID.randomUUID(); + List listLigne = new ArrayList<>(); + LigneCommande ligne = new LigneCommande("hp ecole ",12); + listLigne.add(ligne); + Comandeinfo commandeInfo = new ComandeInfo(uuid,listLigne); + AdresseInfo adressInfo = new AdresseInfo("rue du cheval","La Rochette","77000","France"); + ModePaiement modePaiement = ModePaiement.CB; + + Orders result = OrdersConverter.toDomain(commandeInfo,adressInfo,modePaiement); + + + assertNotNull(result); + assertEquals(result.clientId ,commandeInfo.clientId); + assertEquals(commandeInfo.lignesCommande(), result.lignesCommande()); + assertEquals(result.rue , AdresseInfo.rue); + assertEquals(result.ville , AdresseInfo.ville); + assertEquals(result.codePostal , AdresseInfo.codePostal); + assertEquals(result.pays , AdresseInfo.pays); + assertEquals(result.modePaiement , modePaiement); + } + + +} -- 2.54.0 From 3bf4fcad072d542bbfd892ac5a62e994954ab089 Mon Sep 17 00:00:00 2001 From: lebreton Date: Wed, 20 May 2026 00:10:40 +0200 Subject: [PATCH 02/23] premier test valider --- .../dev62/mylibrary/commande/AdresseInfo.java | 3 ++ .../dev62/mylibrary/commande/ComandeInfo.java | 7 +++ .../mylibrary/commande/LigneCommande.java | 6 +++ .../mylibrary/commande/ModePaiement.java | 7 +++ .../commande/converter/CommandeConverter.java | 25 ++++++++++ .../mylibrary/commande/entity/Commande.java | 21 +++++++++ .../converter/CommandeConverterTest.java | 46 +++++++++++++++++++ .../orders/converter/OrdersConverterTest.java | 40 ---------------- 8 files changed, 115 insertions(+), 40 deletions(-) create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/AdresseInfo.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommande.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ModePaiement.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverter.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java delete mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/orders/converter/OrdersConverterTest.java diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/AdresseInfo.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/AdresseInfo.java new file mode 100644 index 0000000..331871c --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/AdresseInfo.java @@ -0,0 +1,3 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande; + +public record AdresseInfo(String rue, String ville, String codePostal, String pays) {} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java new file mode 100644 index 0000000..89917d3 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java @@ -0,0 +1,7 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande; + +import java.util.List; +import java.util.UUID; + +public record ComandeInfo(UUID clientId, List lignesCommande) { +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommande.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommande.java new file mode 100644 index 0000000..3dad368 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommande.java @@ -0,0 +1,6 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande; + +import java.util.UUID; + +public record LigneCommande(UUID livreId, Integer quantite) { +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ModePaiement.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ModePaiement.java new file mode 100644 index 0000000..8a2bf36 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ModePaiement.java @@ -0,0 +1,7 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande; + +public enum ModePaiement { + CB, + PAYPAL, + POINTS_FIDELITE, +} 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 new file mode 100644 index 0000000..43209f3 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverter.java @@ -0,0 +1,25 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; + +public final class CommandeConverter { + + + public static Commande toDomain(ComandeInfo commandeInfo, AdresseInfo adressInfo, ModePaiement modePaiement) { + + + return Commande.builder() + .clientId(commandeInfo.clientId()) + .lignesCommande(commandeInfo.lignesCommande()) + .rue(adressInfo.rue()) + .ville(adressInfo.ville()) + .codePostal(adressInfo.codePostal()) + .pays(adressInfo.pays()) + .modePaiement(modePaiement) + .build(); + } +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java new file mode 100644 index 0000000..f5a468d --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java @@ -0,0 +1,21 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.entity; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; +import lombok.Builder; +import lombok.Getter; + +import java.util.List; +import java.util.UUID; + +@Getter +@Builder +public class Commande { + private UUID clientId; + private List lignesCommande; + private String rue; + private String ville; + private String codePostal; + private String pays; + private ModePaiement modePaiement; +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java new file mode 100644 index 0000000..9df0cc0 --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java @@ -0,0 +1,46 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.converter.CommandeConverter; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class CommandeConverterTest { + + + @Test + void TestConvertCommandeToDomain(){ + UUID uuidClient = UUID.randomUUID(); + UUID uuidLivre = UUID.randomUUID(); + List listLigne = new ArrayList<>(); + LigneCommande ligne = new LigneCommande(uuidLivre,12); + listLigne.add(ligne); + ComandeInfo commandeInfo = new ComandeInfo(uuidClient,listLigne); + AdresseInfo adressInfo = new AdresseInfo("rue du cheval","La Rochette","77000","France"); + ModePaiement modePaiement = ModePaiement.CB; + + Commande result = CommandeConverter.toDomain(commandeInfo,adressInfo,modePaiement); + + + assertNotNull(result); + assertEquals(commandeInfo.clientId(),result.getClientId()); + assertEquals(commandeInfo.lignesCommande(), result.getLignesCommande()); + assertEquals(adressInfo.rue() , result.getRue()); + assertEquals(adressInfo.ville() , result.getVille()); + assertEquals(adressInfo.codePostal() , result.getCodePostal()); + assertEquals(adressInfo.pays() , result.getPays()); + assertEquals( modePaiement,result.getModePaiement()); + } + + +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/orders/converter/OrdersConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/orders/converter/OrdersConverterTest.java deleted file mode 100644 index 639fc19..0000000 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/orders/converter/OrdersConverterTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package fr.iut_fbleau.but3.dev62.mylibrary.Orders.converter; - -import org.junit.jupiter.api.Orders; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -public class OrdersConverterTest { - - - @Test - void TestConvertOrdersToDomain(){ - UUID uuid = UUID.randomUUID(); - List listLigne = new ArrayList<>(); - LigneCommande ligne = new LigneCommande("hp ecole ",12); - listLigne.add(ligne); - Comandeinfo commandeInfo = new ComandeInfo(uuid,listLigne); - AdresseInfo adressInfo = new AdresseInfo("rue du cheval","La Rochette","77000","France"); - ModePaiement modePaiement = ModePaiement.CB; - - Orders result = OrdersConverter.toDomain(commandeInfo,adressInfo,modePaiement); - - - assertNotNull(result); - assertEquals(result.clientId ,commandeInfo.clientId); - assertEquals(commandeInfo.lignesCommande(), result.lignesCommande()); - assertEquals(result.rue , AdresseInfo.rue); - assertEquals(result.ville , AdresseInfo.ville); - assertEquals(result.codePostal , AdresseInfo.codePostal); - assertEquals(result.pays , AdresseInfo.pays); - assertEquals(result.modePaiement , modePaiement); - } - - -} -- 2.54.0 From e125a420a6522f2a10378a372ca3e6ea009992a7 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sat, 23 May 2026 20:18:35 +0200 Subject: [PATCH 03/23] =?UTF-8?q?cr=C3=A9ation=20des=20test=20sur=20les=20?= =?UTF-8?q?entit=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface-contracts.json | 6 ++++ .../dev62/mylibrary/commande/ComandeInfo.java | 3 +- ...neCommande.java => LigneCommandeInfo.java} | 2 +- .../commande/converter/CommandeConverter.java | 8 ++---- .../converter/LigneCommandeConverter.java | 14 ++++++++++ .../mylibrary/commande/entity/Commande.java | 6 ++-- .../commande/entity/LigneCommande.java | 16 +++++++++++ .../converter/CommandeConverterTest.java | 20 ++++++------- .../converter/LigneCommandeConverterTest.java | 23 +++++++++++++++ .../commande/entity/CommandeTest.java | 21 ++++++++++++++ .../commande/entity/LigneCommandeTest.java | 28 +++++++++++++++++++ 11 files changed, 125 insertions(+), 22 deletions(-) rename src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/{LigneCommande.java => LigneCommandeInfo.java} (56%) create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverter.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommande.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverterTest.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommandeTest.java diff --git a/interface-contracts.json b/interface-contracts.json index c5375c0..d409c56 100644 --- a/interface-contracts.json +++ b/interface-contracts.json @@ -40,6 +40,12 @@ "pointsFideliteGagnes": "integer" } }, + + + + + + "GererAvis": { "input": { "clientId": "uuid", diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java index 89917d3..a116f9d 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java @@ -1,7 +1,6 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande; import java.util.List; -import java.util.UUID; -public record ComandeInfo(UUID clientId, List lignesCommande) { +public record ComandeInfo(List listeLigne ,String modePayement) { } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommande.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommandeInfo.java similarity index 56% rename from src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommande.java rename to src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommandeInfo.java index 3dad368..98256a3 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommande.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommandeInfo.java @@ -2,5 +2,5 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande; import java.util.UUID; -public record LigneCommande(UUID livreId, Integer quantite) { +public record LigneCommandeInfo(int quantite) { } 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 43209f3..c36a990 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 @@ -2,19 +2,15 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommande; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; public final class CommandeConverter { - public static Commande toDomain(ComandeInfo commandeInfo, AdresseInfo adressInfo, ModePaiement modePaiement) { - - + public static Commande toDomain(ComandeInfo commandeInfo, AdresseInfo adressInfo, String modePaiement) { return Commande.builder() - .clientId(commandeInfo.clientId()) - .lignesCommande(commandeInfo.lignesCommande()) + .lignesCommande(commandeInfo.listeLigne()) .rue(adressInfo.rue()) .ville(adressInfo.ville()) .codePostal(adressInfo.codePostal()) diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverter.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverter.java new file mode 100644 index 0000000..3f55367 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverter.java @@ -0,0 +1,14 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.LigneCommande; + +public final class LigneCommandeConverter { + + public static LigneCommande toDomain(LigneCommandeInfo ligneCommandeInfo) { + return LigneCommande.builder() + .quantite(ligneCommandeInfo.quantite()) + .build(); + } +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java index f5a468d..269cf6f 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java @@ -1,6 +1,6 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.entity; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; import lombok.Builder; import lombok.Getter; @@ -12,10 +12,10 @@ import java.util.UUID; @Builder public class Commande { private UUID clientId; - private List lignesCommande; + private List lignesCommande; private String rue; private String ville; private String codePostal; private String pays; - private ModePaiement modePaiement; + private String modePaiement; } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommande.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommande.java new file mode 100644 index 0000000..e79be10 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommande.java @@ -0,0 +1,16 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.entity; + + +import lombok.Builder; +import lombok.Getter; + +import java.util.UUID; + +@Getter +@Builder +public class LigneCommande { + + int quantite; + UUID id; + +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java index 9df0cc0..89c03ca 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java @@ -2,9 +2,8 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.converter.CommandeConverter; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; import org.junit.jupiter.api.Test; @@ -20,21 +19,22 @@ public class CommandeConverterTest { @Test void TestConvertCommandeToDomain(){ - UUID uuidClient = UUID.randomUUID(); - UUID uuidLivre = UUID.randomUUID(); - List listLigne = new ArrayList<>(); - LigneCommande ligne = new LigneCommande(uuidLivre,12); + String modePaiement = ModePaiement.CB.name(); + List listLigne = new ArrayList<>(); + LigneCommandeInfo ligne = new LigneCommandeInfo(12); + LigneCommandeInfo ligne2 = new LigneCommandeInfo(14); listLigne.add(ligne); - ComandeInfo commandeInfo = new ComandeInfo(uuidClient,listLigne); + listLigne.add(ligne2); + ComandeInfo commandeInfo = new ComandeInfo(listLigne,modePaiement); AdresseInfo adressInfo = new AdresseInfo("rue du cheval","La Rochette","77000","France"); - ModePaiement modePaiement = ModePaiement.CB; + Commande result = CommandeConverter.toDomain(commandeInfo,adressInfo,modePaiement); assertNotNull(result); - assertEquals(commandeInfo.clientId(),result.getClientId()); - assertEquals(commandeInfo.lignesCommande(), result.getLignesCommande()); + //assertEquals(commandeInfo.clientId(),result.getClientId()); + assertEquals(commandeInfo.listeLigne(), result.getLignesCommande()); assertEquals(adressInfo.rue() , result.getRue()); assertEquals(adressInfo.ville() , result.getVille()); assertEquals(adressInfo.codePostal() , result.getCodePostal()); diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverterTest.java new file mode 100644 index 0000000..752ce35 --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverterTest.java @@ -0,0 +1,23 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.LigneCommande; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class LigneCommandeConverterTest { + + + @Test + void TestConvertLigneCommandeToDomain(){ + LigneCommandeInfo ligne = new LigneCommandeInfo(12); + + LigneCommande result = LigneCommandeConverter.toDomain(ligne); + + + assertEquals(ligne.quantite(),result.getQuantite()); + + } + +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java new file mode 100644 index 0000000..9a5599a --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java @@ -0,0 +1,21 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.entity; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class CommandeTest { + @Test + public void commandeTest(){ + + UUID clientId = UUID.randomUUID(); + List lignesCommande = new ArrayList<>(); + String rue = "rue du chien" ; + String ville = "LKa Rochette" ; + String codePostal = "7700" ; + String pays = "France" ; + } +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommandeTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommandeTest.java new file mode 100644 index 0000000..ca9c1d9 --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommandeTest.java @@ -0,0 +1,28 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.entity; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class LigneCommandeTest { + + @Test + @DisplayName("Builder should create a valid LigneCommande instance") + void TestLigneCommande() { + UUID id = UUID.randomUUID(); + int quantite = 12; + + + LigneCommande ligneCommande = LigneCommande.builder() + .id(id) + .quantite(quantite) + .build(); + + assertEquals(id, ligneCommande.getId()); + assertEquals(quantite, ligneCommande.getQuantite()); + + } +} -- 2.54.0 From 67b5b83943fe7fbc182a9331de8712817a91fe10 Mon Sep 17 00:00:00 2001 From: lebreton Date: Mon, 25 May 2026 18:45:14 +0200 Subject: [PATCH 04/23] =?UTF-8?q?cr=C3=A9ation=20des=20test=20sur=20toDTO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev62/mylibrary/commande/CommandeDTO.java | 19 ++++++++++++ .../mylibrary/commande/LigneCommandeDTO.java | 15 ++++++++++ .../commande/converter/CommandeConverter.java | 13 ++++++++ .../converter/LigneCommandeConverter.java | 8 +++++ .../converter/CommandeConverterTest.java | 30 +++++++++++++++---- .../converter/LigneCommandeConverterTest.java | 12 ++++++++ 6 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeDTO.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommandeDTO.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 new file mode 100644 index 0000000..5be3516 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeDTO.java @@ -0,0 +1,19 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande; + +import lombok.Builder; +import lombok.Getter; + +import java.util.List; +import java.util.UUID; + +@Getter +@Builder +public class CommandeDTO { + private UUID clientId; + private List lignesCommande; + private String rue; + private String ville; + private String codePostal; + private String pays; + private String modePaiement; +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommandeDTO.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommandeDTO.java new file mode 100644 index 0000000..73626de --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/LigneCommandeDTO.java @@ -0,0 +1,15 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande; + + +import lombok.Builder; +import lombok.Getter; + +import java.util.UUID; + +@Getter +@Builder +public class LigneCommandeDTO { + + int quantite; + UUID id; +} 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 c36a990..dbaa926 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 @@ -2,6 +2,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeDTO; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; @@ -18,4 +19,16 @@ public final class CommandeConverter { .modePaiement(modePaiement) .build(); } + + public static CommandeDTO toDTO(ComandeInfo commandeInfo, AdresseInfo adressInfo, String modePaiement) { + return CommandeDTO.builder() + .lignesCommande(commandeInfo.listeLigne()) + .rue(adressInfo.rue()) + .ville(adressInfo.ville()) + .codePostal(adressInfo.codePostal()) + .pays(adressInfo.pays()) + .modePaiement(modePaiement) + .build(); + } + } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverter.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverter.java index 3f55367..f7732e3 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverter.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverter.java @@ -1,5 +1,6 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeDTO; import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.LigneCommande; @@ -11,4 +12,11 @@ public final class LigneCommandeConverter { .quantite(ligneCommandeInfo.quantite()) .build(); } + + public static LigneCommandeDTO toDTO(LigneCommandeInfo ligneCommandeInfo) { + return LigneCommandeDTO.builder() + .quantite(ligneCommandeInfo.quantite()) + .build(); + } + } diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java index 89c03ca..7ee561d 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java @@ -1,9 +1,6 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.*; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; import org.junit.jupiter.api.Test; @@ -33,7 +30,30 @@ public class CommandeConverterTest { assertNotNull(result); - //assertEquals(commandeInfo.clientId(),result.getClientId()); + assertEquals(commandeInfo.listeLigne(), result.getLignesCommande()); + assertEquals(adressInfo.rue() , result.getRue()); + assertEquals(adressInfo.ville() , result.getVille()); + assertEquals(adressInfo.codePostal() , result.getCodePostal()); + assertEquals(adressInfo.pays() , result.getPays()); + assertEquals( modePaiement,result.getModePaiement()); + } + + @Test + void TestConvertCommandeToDTO(){ + String modePaiement = ModePaiement.CB.name(); + List listLigne = new ArrayList<>(); + LigneCommandeInfo ligne = new LigneCommandeInfo(12); + LigneCommandeInfo ligne2 = new LigneCommandeInfo(14); + listLigne.add(ligne); + listLigne.add(ligne2); + ComandeInfo commandeInfo = new ComandeInfo(listLigne,modePaiement); + AdresseInfo adressInfo = new AdresseInfo("rue du cheval","La Rochette","77000","France"); + + + CommandeDTO result = CommandeConverter.toDTO(commandeInfo,adressInfo,modePaiement); + + + assertNotNull(result); assertEquals(commandeInfo.listeLigne(), result.getLignesCommande()); assertEquals(adressInfo.rue() , result.getRue()); assertEquals(adressInfo.ville() , result.getVille()); diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverterTest.java index 752ce35..b9a1873 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverterTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/LigneCommandeConverterTest.java @@ -1,5 +1,6 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeDTO; import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.LigneCommande; import org.junit.jupiter.api.Test; @@ -16,6 +17,17 @@ public class LigneCommandeConverterTest { LigneCommande result = LigneCommandeConverter.toDomain(ligne); + assertEquals(ligne.quantite(),result.getQuantite()); + + } + + @Test + void TestConvertLigneCommandeToDTO(){ + LigneCommandeInfo ligne = new LigneCommandeInfo(12); + + LigneCommandeDTO result = LigneCommandeConverter.toDTO(ligne); + + assertEquals(ligne.quantite(),result.getQuantite()); } -- 2.54.0 From 82164689cf3ad58db6dc528ea65732666be467ab Mon Sep 17 00:00:00 2001 From: lebreton Date: Mon, 25 May 2026 18:46:21 +0200 Subject: [PATCH 05/23] =?UTF-8?q?cr=C3=A9ation=20des=20test=20sur=20les=20?= =?UTF-8?q?UUID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mylibrary/commande/entity/Commande.java | 5 +++ .../commande/entity/LigneCommande.java | 6 ++- .../commande/entity/CommandeTest.java | 44 +++++++++++++++++++ .../commande/entity/LigneCommandeTest.java | 19 ++++++-- 4 files changed, 70 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java index 269cf6f..a5ae6b7 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java @@ -18,4 +18,9 @@ public class Commande { private String codePostal; private String pays; private String modePaiement; + + public void setRandomUUID() { + this.clientId = UUID.randomUUID(); + } + } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommande.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommande.java index e79be10..9b9844c 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommande.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommande.java @@ -11,6 +11,10 @@ import java.util.UUID; public class LigneCommande { int quantite; - UUID id; + UUID livreId; + + public void setRandomUUID() { + this.livreId = UUID.randomUUID(); + } } diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java index 9a5599a..41e24f1 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java @@ -1,21 +1,65 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.entity; import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; import java.util.UUID; +import static org.junit.jupiter.api.Assertions.*; + public class CommandeTest { @Test public void commandeTest(){ UUID clientId = UUID.randomUUID(); List lignesCommande = new ArrayList<>(); + LigneCommandeInfo commande1 = new LigneCommandeInfo(12); + LigneCommandeInfo commande2 = new LigneCommandeInfo(13); + lignesCommande.add(commande1); + lignesCommande.add(commande2); String rue = "rue du chien" ; String ville = "LKa Rochette" ; String codePostal = "7700" ; String pays = "France" ; + + Commande commande = Commande.builder() + .clientId(clientId) + .lignesCommande(lignesCommande) + .rue(rue) + .ville(ville) + .codePostal(codePostal) + .pays(pays) + .build(); + + assertEquals(clientId, commande.getClientId()); + assertEquals(lignesCommande, commande.getLignesCommande()); + assertEquals(rue, commande.getRue()); + assertEquals(ville, commande.getVille()); + assertEquals(codePostal, commande.getCodePostal()); + assertEquals(pays, commande.getPays()); } + + + + @Test + @DisplayName("setRandomUUID should change the ID to a new random UUID") + void testSetRandomUUID() { + Commande commande = Commande.builder().build(); + UUID originalId = commande.getClientId(); + + commande.setRandomUUID(); + + assertNotNull(commande.getClientId()); + assertNotEquals(originalId, commande.getClientId()); + } + + + + + + } diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommandeTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommandeTest.java index ca9c1d9..8ebaac4 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommandeTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/LigneCommandeTest.java @@ -1,11 +1,12 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.entity; +import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.*; public class LigneCommandeTest { @@ -17,12 +18,24 @@ public class LigneCommandeTest { LigneCommande ligneCommande = LigneCommande.builder() - .id(id) + .livreId(id) .quantite(quantite) .build(); - assertEquals(id, ligneCommande.getId()); + assertEquals(id, ligneCommande.getLivreId()); assertEquals(quantite, ligneCommande.getQuantite()); } + + @Test + @DisplayName("setRandomUUID should change the ID to a new random UUID") + void testSetRandomUUID() { + LigneCommande ligneCommande = LigneCommande.builder().build(); + UUID originalId = ligneCommande.getLivreId(); + + ligneCommande.setRandomUUID(); + + assertNotNull(ligneCommande.getLivreId()); + assertNotEquals(originalId, ligneCommande.getLivreId()); + } } -- 2.54.0 From 8d33d16cb849cbfd574492fc0d033911870e3f93 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sat, 6 Jun 2026 23:38:56 +0200 Subject: [PATCH 06/23] =?UTF-8?q?cr=C3=A9ation=20des=20test=20sur=20les=20?= =?UTF-8?q?validator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface-contracts.json | 6 + .../exception/NotValidAdressException.java | 7 + .../exception/NotValidCommandeException.java | 7 + .../NotValidLigneCommandeException.java | 7 + .../commande/validator/CommandeValidator.java | 88 ++++++++++ .../validator/CommandeValidatorTest.java | 166 ++++++++++++++++++ 6 files changed, 281 insertions(+) create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidAdressException.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidCommandeException.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidLigneCommandeException.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidator.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java diff --git a/interface-contracts.json b/interface-contracts.json index d409c56..5f4bdbc 100644 --- a/interface-contracts.json +++ b/interface-contracts.json @@ -19,6 +19,12 @@ } }, + + + + + + "PasserCommande": { "input": { "clientId": "uuid", diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidAdressException.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidAdressException.java new file mode 100644 index 0000000..996a601 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidAdressException.java @@ -0,0 +1,7 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception; + +public class NotValidAdressException extends RuntimeException { + public NotValidAdressException(String message) { + super(message); + } +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidCommandeException.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidCommandeException.java new file mode 100644 index 0000000..c7016a1 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidCommandeException.java @@ -0,0 +1,7 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception; + +public class NotValidCommandeException extends RuntimeException { + public NotValidCommandeException(String message) { + super(message); + } +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidLigneCommandeException.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidLigneCommandeException.java new file mode 100644 index 0000000..3a3a656 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/NotValidLigneCommandeException.java @@ -0,0 +1,7 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception; + +public class NotValidLigneCommandeException extends RuntimeException { + public NotValidLigneCommandeException(String message) { + super(message); + } +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidator.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidator.java new file mode 100644 index 0000000..3c6345c --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidator.java @@ -0,0 +1,88 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.validator; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidAdressException; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidCommandeException; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidLigneCommandeException; + +import java.util.List; +import java.util.Objects; + +public final class CommandeValidator { + + public static final String LIGNE_COMMANDE_IS_NOT_VALIDE = "Ligne commande is not valide"; + public static final String MODE_PAIEMENT_IS_NOT_VALIDE = "Mode Paiement is not valide"; + public static final String LIST_LIGNE_COMANDE_IS_NOT_VALIDE = "List ligne commande is not valide"; + public static final String STREET_IS_NOT_VALIDE = "rue is not valide"; + + public static final String CITY_IS_NOT_VALIDE = "city is not valide"; + public static final String CODE_POSTAL_IS_NOT_VALIDE = "code postal is not valide"; + public static final String COUNTRY_IS_NOT_VALIDE = "Country is not valide"; + + + public static void validate(LigneCommandeInfo ligneCommandeInfo) { + if (ligneCommandeInfo.quantite()<=0){ + throw new NotValidLigneCommandeException(LIGNE_COMMANDE_IS_NOT_VALIDE); + } + } + + public static void validate(ComandeInfo comandeInfo) { + + validateModePaiement(comandeInfo); + validateListLigneCommande(comandeInfo); + } + + public static void validate(AdresseInfo adresseInfo) { + validateStreet(adresseInfo); + validateCity(adresseInfo); + validateCodePostal(adresseInfo); + validateCountry(adresseInfo); + } + + + + private static void validateModePaiement(ComandeInfo comandeInfo) { + if(comandeInfo.modePayement()!="CB"&& comandeInfo.modePayement()!="PAYPAL"&&comandeInfo.modePayement()!="POINTS_FIDELITE"){ + throw new NotValidCommandeException(MODE_PAIEMENT_IS_NOT_VALIDE); + } + } + + private static void validateListLigneCommande(ComandeInfo comandeInfo) { + if (comandeInfo.listeLigne() == null + || comandeInfo.listeLigne().isEmpty() + || comandeInfo.listeLigne().stream().anyMatch(Objects::isNull)){ + throw new NotValidCommandeException(LIST_LIGNE_COMANDE_IS_NOT_VALIDE); + } + + } + + private static void validateStreet(AdresseInfo adresseInfo) { + if (adresseInfo.rue() == null || adresseInfo.rue().isBlank()){ + throw new NotValidAdressException(STREET_IS_NOT_VALIDE); + } + } + private static void validateCity(AdresseInfo adresseInfo) { + if (adresseInfo.ville() == null || adresseInfo.ville().isBlank()){ + throw new NotValidAdressException(CITY_IS_NOT_VALIDE); + } + } + + private static void validateCodePostal(AdresseInfo adresseInfo) { + if (adresseInfo.codePostal() == null || adresseInfo.codePostal().isBlank()){ + throw new NotValidAdressException(CODE_POSTAL_IS_NOT_VALIDE); + } + } + + private static void validateCountry(AdresseInfo adresseInfo) { + if (adresseInfo.pays() == null || adresseInfo.pays().isBlank()){ + throw new NotValidAdressException(COUNTRY_IS_NOT_VALIDE); + } + } + + + + + +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java new file mode 100644 index 0000000..0cd006a --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java @@ -0,0 +1,166 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.validator; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.LigneCommande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidAdressException; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidCommandeException; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidLigneCommandeException; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.*; + +import java.util.*; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.*; + +public class CommandeValidatorTest { + + + @Test + void testValidateValideLigneCommande () { + LigneCommandeInfo ligneCommandeValide = new LigneCommandeInfo(5); + + + assertDoesNotThrow(() -> CommandeValidator.validate(ligneCommandeValide)); + } + @ParameterizedTest + @ValueSource(ints = {-5,0 }) + void testValidateNotValideLigneCommande (int notValiteQuantite) { + LigneCommandeInfo ligneCommandeNotValide = new LigneCommandeInfo(notValiteQuantite); + NotValidLigneCommandeException exception = assertThrows( + NotValidLigneCommandeException.class, + () -> CommandeValidator.validate(ligneCommandeNotValide) + ); + + assertEquals(CommandeValidator.LIGNE_COMMANDE_IS_NOT_VALIDE, exception.getMessage()); + } + + + @ParameterizedTest + @EnumSource(value = ModePaiement.class, names = {"CB", "PAYPAL", "POINTS_FIDELITE"}) + void testValidateValideCommande(ModePaiement modePaiement) { + LigneCommandeInfo ligneCommandeValide = new LigneCommandeInfo(5); + List listeLigne = new ArrayList<>(); + listeLigne.add(ligneCommandeValide); + String modePaiementValide = modePaiement.toString(); + ComandeInfo commandeValid = new ComandeInfo(listeLigne, modePaiementValide); + + assertDoesNotThrow(() -> CommandeValidator.validate(commandeValid)); + } + + @ParameterizedTest + @ValueSource(strings = {"jambon", " ", ""}) + void testValidateNotValideModePaiement(String modePaiementError) { + LigneCommandeInfo ligneCommandeValide = new LigneCommandeInfo(5); + List listeLigne = new ArrayList<>(); + listeLigne.add(ligneCommandeValide); + String modePaiementValide = modePaiementError; + ComandeInfo commandeValid = new ComandeInfo(listeLigne, modePaiementValide); + + NotValidCommandeException exception = assertThrows( + NotValidCommandeException.class, + () -> CommandeValidator.validate(commandeValid) + ); + assertEquals(CommandeValidator.MODE_PAIEMENT_IS_NOT_VALIDE, exception.getMessage()); + } + + @ParameterizedTest + @MethodSource("provideInvalidOrderLists") + void testValidateNotValideListLigneCommande(List listeLigne) { + String modePaiementValide = ModePaiement.CB.toString(); + ComandeInfo commandeValid = new ComandeInfo(listeLigne, modePaiementValide); + NotValidCommandeException exception = assertThrows( + NotValidCommandeException.class, + () -> CommandeValidator.validate(commandeValid) + ); + assertEquals(CommandeValidator.LIST_LIGNE_COMANDE_IS_NOT_VALIDE, exception.getMessage()); + + } + static Stream provideInvalidOrderLists() { + return Stream.of( + Arguments.of(Collections.emptyList()), + Arguments.of(Arrays.asList(new LigneCommandeInfo(5), null, null, new LigneCommandeInfo(12))), + Arguments.of((List) null) + ); + } + + @Nested + class TestAdress{ + + + @Test + void testValidateValideLigneCommande () { + AdresseInfo adress = new AdresseInfo("rue du chien","La Rochette","7700","France"); + + assertDoesNotThrow(() -> CommandeValidator.validate(adress)); + } + + + + + @ParameterizedTest + @NullSource + @ValueSource(strings = {" ", " ", "\t", "\n"}) + void testValidateNotValideStreet(String notvalideStreet) { + AdresseInfo adress = new AdresseInfo(notvalideStreet,"La Rochette","7700","France"); + NotValidAdressException exception = assertThrows( + NotValidAdressException.class, + () -> CommandeValidator.validate(adress) + ); + assertEquals(CommandeValidator.STREET_IS_NOT_VALIDE, exception.getMessage()); + } + + @ParameterizedTest + @NullSource + @ValueSource(strings = {" ", " ", "\t", "\n"}) + void testValidateNotValideCity(String notvalideCity) { + AdresseInfo adress = new AdresseInfo("rue du chien",notvalideCity,"7700","France"); + NotValidAdressException exception = assertThrows( + NotValidAdressException.class, + () -> CommandeValidator.validate(adress) + ); + assertEquals(CommandeValidator.CITY_IS_NOT_VALIDE, exception.getMessage()); + } + + @ParameterizedTest + @NullSource + @ValueSource(strings = {" ", " ", "\t", "\n"}) + void testValidateNotValideCodePostal(String notvalideCodePostal) { + AdresseInfo adress = new AdresseInfo("rue du chien","La Rochette",notvalideCodePostal,"France"); + NotValidAdressException exception = assertThrows( + NotValidAdressException.class, + () -> CommandeValidator.validate(adress) + ); + assertEquals(CommandeValidator.CODE_POSTAL_IS_NOT_VALIDE, exception.getMessage()); + } + + @ParameterizedTest + @NullSource + @ValueSource(strings = {" ", " ", "\t", "\n"}) + void testValidateNotValideCountry(String notvalideCountry) { + AdresseInfo adress = new AdresseInfo("rue du chien","La Rochette","7700",notvalideCountry); + NotValidAdressException exception = assertThrows( + NotValidAdressException.class, + () -> CommandeValidator.validate(adress) + ); + assertEquals(CommandeValidator.COUNTRY_IS_NOT_VALIDE, exception.getMessage()); + } + + } + + + + + + + + + + + +} -- 2.54.0 From 213f7f64db20ca1f3eb85befbc45a157acbc5f02 Mon Sep 17 00:00:00 2001 From: lebreton Date: Wed, 10 Jun 2026 19:44:55 +0200 Subject: [PATCH 07/23] test sur les exception --- .../mylibrary/commande/exception/Test.java | 4 ++ .../valid/NotValidAdressExceptionTest.java | 67 +++++++++++++++++++ .../valid/NotValidCommandeExceptionTest.java | 61 +++++++++++++++++ .../NotValidLigneCommandeExceptionTest.java | 47 +++++++++++++ 4 files changed, 179 insertions(+) create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/Test.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidAdressExceptionTest.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidCommandeExceptionTest.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidLigneCommandeExceptionTest.java diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/Test.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/Test.java new file mode 100644 index 0000000..dc8e59a --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/Test.java @@ -0,0 +1,4 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception; + +public class Test { +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidAdressExceptionTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidAdressExceptionTest.java new file mode 100644 index 0000000..69fecc7 --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidAdressExceptionTest.java @@ -0,0 +1,67 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.valid; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidAdressException; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class NotValidAdressExceptionTest { + + @Test + @DisplayName("Exception should be created with the provided message") + void testExceptionCreation() { + String errorMessage = "Adresse is not valid"; + + NotValidAdressException exception = new NotValidAdressException(errorMessage); + + assertEquals(errorMessage, exception.getMessage()); + } + + @ParameterizedTest + @ValueSource(strings = { + "rue is not valide", + "city is not valide", + "code postal is not valide", + "Country is not valide" + }) + @DisplayName("Exception should handle different validation messages") + void testExceptionWithDifferentMessages(String errorMessage) { + NotValidAdressException exception = new NotValidAdressException(errorMessage); + + assertEquals(errorMessage, exception.getMessage()); + } + + @Test + @DisplayName("Exception should be properly thrown and caught") + void testExceptionCanBeThrownAndCaught() { + String errorMessage = "Required field is missing"; + + Exception exception = assertThrows(NotValidAdressException.class, () -> { + throw new NotValidAdressException(errorMessage); + }); + + assertEquals(errorMessage, exception.getMessage()); + } + + @Test + @DisplayName("Exception should be catchable as a general Exception") + void testExceptionInheritance() { + String errorMessage = "Invalid Adresse "; + + try { + throw new NotValidAdressException(errorMessage); + } catch (Exception e) { + assertEquals(NotValidAdressException.class, e.getClass()); + assertEquals(errorMessage, e.getMessage()); + } + } + + + + + +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidCommandeExceptionTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidCommandeExceptionTest.java new file mode 100644 index 0000000..04c2020 --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidCommandeExceptionTest.java @@ -0,0 +1,61 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.valid; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidCommandeException; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class NotValidCommandeExceptionTest { + + @Test + @DisplayName("Exception should be created with the provided message") + void testExceptionCreation() { + String errorMessage = "Commande is not valid"; + + NotValidCommandeException exception = new NotValidCommandeException(errorMessage); + + assertEquals(errorMessage, exception.getMessage()); + } + + @ParameterizedTest + @ValueSource(strings = { + "Mode Paiement is not valide", + "List ligne commande is not valide" + }) + @DisplayName("Exception should handle different validation messages") + void testExceptionWithDifferentMessages(String errorMessage) { + NotValidCommandeException exception = new NotValidCommandeException(errorMessage); + + assertEquals(errorMessage, exception.getMessage()); + } + + @Test + @DisplayName("Exception should be properly thrown and caught") + void testExceptionCanBeThrownAndCaught() { + String errorMessage = "Required field is missing"; + + Exception exception = assertThrows(NotValidCommandeException.class, () -> { + throw new NotValidCommandeException(errorMessage); + }); + + assertEquals(errorMessage, exception.getMessage()); + } + + @Test + @DisplayName("Exception should be catchable as a general Exception") + void testExceptionInheritance() { + String errorMessage = "Invalid Commande "; + + try { + throw new NotValidCommandeException(errorMessage); + } catch (Exception e) { + assertEquals(NotValidCommandeException.class, e.getClass()); + assertEquals(errorMessage, e.getMessage()); + } + } + +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidLigneCommandeExceptionTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidLigneCommandeExceptionTest.java new file mode 100644 index 0000000..11fab22 --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/NotValidLigneCommandeExceptionTest.java @@ -0,0 +1,47 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.valid; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidLigneCommandeException; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class NotValidLigneCommandeExceptionTest { + + @Test + @DisplayName("Exception should handle different validation messages") + void testExceptionCreation() { + String errorMessage = "Ligne commande is not valide"; + NotValidLigneCommandeException exception = new NotValidLigneCommandeException(errorMessage); + + assertEquals(errorMessage, exception.getMessage()); + } + + @Test + @DisplayName("Exception should be properly thrown and caught") + void testExceptionCanBeThrownAndCaught() { + String errorMessage = "Required field is missing"; + + Exception exception = assertThrows(NotValidLigneCommandeException.class, () -> { + throw new NotValidLigneCommandeException(errorMessage); + }); + + assertEquals(errorMessage, exception.getMessage()); + } + + @Test + @DisplayName("Exception should be catchable as a general Exception") + void testExceptionInheritance() { + String errorMessage = "Invalid Commande "; + + try { + throw new NotValidLigneCommandeException(errorMessage); + } catch (Exception e) { + assertEquals(NotValidLigneCommandeException.class, e.getClass()); + assertEquals(errorMessage, e.getMessage()); + } + } + + +} -- 2.54.0 From 2c14ee5e0b7d6ddfa3bb31075b8789a9bd5292b7 Mon Sep 17 00:00:00 2001 From: lebreton Date: Thu, 11 Jun 2026 21:25:29 +0200 Subject: [PATCH 08/23] rajoute du Mode de payement a tester oublie --- .../but3/dev62/mylibrary/commande/entity/CommandeTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java index 41e24f1..34fefed 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java @@ -1,6 +1,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.entity; import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -25,6 +26,7 @@ public class CommandeTest { String ville = "LKa Rochette" ; String codePostal = "7700" ; String pays = "France" ; + String modePayement = ModePaiement.CB.name() ; Commande commande = Commande.builder() .clientId(clientId) @@ -33,6 +35,7 @@ public class CommandeTest { .ville(ville) .codePostal(codePostal) .pays(pays) + .modePaiement(modePayement) .build(); assertEquals(clientId, commande.getClientId()); @@ -41,6 +44,7 @@ public class CommandeTest { assertEquals(ville, commande.getVille()); assertEquals(codePostal, commande.getCodePostal()); assertEquals(pays, commande.getPays()); + assertEquals(modePayement, commande.getModePaiement()); } -- 2.54.0 From ce27a686efa4e59d8ffd8b94a3224a10b483b920 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sat, 13 Jun 2026 13:54:40 +0200 Subject: [PATCH 09/23] ajout test sur commandID --- .../mylibrary/commande/entity/CommandeTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java index 34fefed..df3f6db 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java @@ -61,6 +61,18 @@ public class CommandeTest { assertNotEquals(originalId, commande.getClientId()); } + @Test + @DisplayName("setRandomUUID should change the ID to a new random UUID") + void testSetRandomUUIDForCommande() { + Commande commande = Commande.builder().build(); + UUID originalId = commande.getCommandeId(); + + commande.setRandomUUIDCommand(); + + assertNotNull(commande.getCommandeId()); + assertNotEquals(originalId, commande.getCommandeId()); + } + -- 2.54.0 From 4552585ef92215bfc0977995d7434d6741e5e9fc Mon Sep 17 00:00:00 2001 From: lebreton Date: Sat, 13 Jun 2026 14:10:37 +0200 Subject: [PATCH 10/23] ajout commandID --- .../dev62/mylibrary/commande/entity/Commande.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java index a5ae6b7..98ef1e6 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java @@ -19,8 +19,19 @@ public class Commande { private String pays; private String modePaiement; + private UUID commandeId ; + private double montantTotal ; + private Integer pointsFideliteGagnes ; + public void setRandomUUID() { this.clientId = UUID.randomUUID(); } + public void setRandomUUIDCommande() { + this.commandeId = UUID.randomUUID(); + } + + + // conversion point de fidéliter + } -- 2.54.0 From 2161a0cf010407e055eef218ded8e142a82584f4 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sat, 13 Jun 2026 14:23:45 +0200 Subject: [PATCH 11/23] =?UTF-8?q?Test=20point=20de=20fidelit=C3=A9=20conve?= =?UTF-8?q?rt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commande/entity/CommandeTest.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java index df3f6db..36447bf 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/CommandeTest.java @@ -2,9 +2,10 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.entity; import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; -import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import java.util.ArrayList; import java.util.List; @@ -67,13 +68,35 @@ public class CommandeTest { Commande commande = Commande.builder().build(); UUID originalId = commande.getCommandeId(); - commande.setRandomUUIDCommand(); + commande.setRandomUUIDCommande(); assertNotNull(commande.getCommandeId()); assertNotEquals(originalId, commande.getCommandeId()); } + @Test + void testConvertPointsFideliteGagnes(){ + Commande commande = Commande.builder() + .montantTotal(14.34) + .build(); + Integer point = commande.convertPointsFidelite(); + + assertEquals(point,(int) Math.ceil(commande.getMontantTotal())); + } + + @ParameterizedTest + @ValueSource(doubles = {-1.9,0.0}) + void testConvertPointsFideliteGagnesWhenMontantTotalIsNotGood(){ + Commande commande = Commande.builder() + .montantTotal(14.34) + .build(); + Integer point = commande.convertPointsFidelite(); + + assertEquals(point,(int) Math.ceil(commande.getMontantTotal())); + } + + -- 2.54.0 From d985e2fa8f1625e1b85bc7fcbbab78ebe7fd6899 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sat, 13 Jun 2026 14:23:58 +0200 Subject: [PATCH 12/23] =?UTF-8?q?methode=20point=20de=20fidelit=C3=A9=20co?= =?UTF-8?q?nvert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../but3/dev62/mylibrary/commande/entity/Commande.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java index 98ef1e6..16abe85 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/entity/Commande.java @@ -31,6 +31,13 @@ public class Commande { this.commandeId = UUID.randomUUID(); } + public int convertPointsFidelite(){ + if (this.montantTotal==0|| this.montantTotal<=0){ + return 0; + } + return (int) Math.ceil(this.getMontantTotal()); + } + // conversion point de fidéliter -- 2.54.0 From 98d41ea409daea099be8f0ea64ede3d372fe8b81 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sat, 13 Jun 2026 19:31:13 +0200 Subject: [PATCH 13/23] debut des test sur la bd --- .../repository/CommandeRepositoryTest.java | 220 ++++++++++++++++++ .../validator/CommandeValidatorTest.java | 1 - 2 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java new file mode 100644 index 0000000..bc40b1c --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java @@ -0,0 +1,220 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.repository; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; +import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer; +import fr.iut_fbleau.but3.dev62.mylibrary.customer.repository.CustomerRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CommandeRepositoryTest { + + private ComandeRepository repository; + private Commande commandeN1; + private Commande commandeN2; + private Commande commandeN3; + + @BeforeEach + void setUp() { + repository = new ComandeRepository(); + + UUID clientId = UUID.randomUUID(); + List lignesCommande = new ArrayList<>(); + LigneCommandeInfo commande1 = new LigneCommandeInfo(12); + LigneCommandeInfo commande2 = new LigneCommandeInfo(13); + lignesCommande.add(commande1); + lignesCommande.add(commande2); + String rue = "rue du chien"; + String ville = "LKa Rochette"; + String codePostal = "7700"; + String pays = "France"; + String modePayement = ModePaiement.CB.name(); + + commandeN1 = Commande.builder() + .clientId(clientId) + .lignesCommande(lignesCommande) + .rue(rue) + .ville(ville) + .codePostal(codePostal) + .pays(pays) + .modePaiement(modePayement) + .build(); + commandeN1.setRandomUUIDCommande(); + + + List lignesCommande2 = new ArrayList<>(); + LigneCommandeInfo commande3 = new LigneCommandeInfo(43); + LigneCommandeInfo commande4 = new LigneCommandeInfo(1); + lignesCommande2.add(commande3); + lignesCommande2.add(commande4); + + commandeN2 = Commande.builder() + .clientId(clientId) + .lignesCommande(lignesCommande2) + .rue(rue) + .ville(ville) + .codePostal(codePostal) + .pays(pays) + .modePaiement(modePayement) + .build(); + commandeN2.setRandomUUID(); + commandeN2.setRandomUUIDCommande(); + + List lignesCommande3 = new ArrayList<>(); + LigneCommandeInfo commande6 = new LigneCommandeInfo(12); + LigneCommandeInfo commande7 = new LigneCommandeInfo(13); + lignesCommande3.add(commande6); + lignesCommande3.add(commande7); + String rue2 = "rue du chevre chaud "; + String ville2 = "jsp"; + String codePostal2 = "77"; + String pays2 = "Lune "; + String modePayement2 = ModePaiement.PAYPAL.name(); + + commandeN3 = Commande.builder() + .lignesCommande(lignesCommande3) + .rue(rue2) + .ville(ville2) + .codePostal(codePostal2) + .pays(pays2) + .modePaiement(modePayement2) + .build(); + commandeN3.setRandomUUID(); + commandeN3.setRandomUUIDCommande(); + + } + + @Test + @DisplayName("New repository should be empty") + void testNewRepositoryIsEmpty() { + List commande = repository.findAll(); + + assertTrue(commande.isEmpty()); + assertEquals(0, commande.size()); + } + + + @Nested + @DisplayName("Save operations") + class SaveOperations { + @Test + @DisplayName("Save should add a new comande") + void testSaveNewCommande() { + Commande savedCommande = repository.save(commandeN1); + + assertEquals(1, repository.findAll().size()); + assertEquals(commandeN1.getCommandeId(), savedCommande.getCommandeId()); + assertEquals(commandeN1.getClientId(), savedCommande.getClientId()); + } + + + @Test + @DisplayName("Save should update existing commande with same ID") + void testSaveUpdatesExistingCommande() { + repository.save(commandeN1); + + + List lignesCommande2 = new ArrayList<>(); + LigneCommandeInfo commande3 = new LigneCommandeInfo(43); + LigneCommandeInfo commande4 = new LigneCommandeInfo(1); + lignesCommande2.add(commande3); + lignesCommande2.add(commande4); + + + UUID id = commandeN1.getCommandeId(); + Commande updatedCommande = Commande.builder() + .commandeId(id) + .lignesCommande(lignesCommande2) + .rue("rue") + .ville("moi") + .codePostal("1") + .pays("Russie") + .modePaiement(ModePaiement.POINTS_FIDELITE.name()) + .build(); + + Commande savedCommande = repository.save(updatedCommande); + + assertEquals(1, repository.findAll().size()); + assertEquals(id, savedCommande.getCommandeId()); + assertEquals("rue", savedCommande.getRue()); + assertEquals("moi", savedCommande.getVille()); + assertEquals("1", savedCommande.getCodePostal()); + assertEquals("1", savedCommande.getPays()); + assertEquals(ModePaiement.POINTS_FIDELITE.name(), savedCommande.getModePaiement()); + } + + @Test + @DisplayName("Save multiple customers should add all of them") + void testSaveMultipleCommande() { + repository.save(commandeN1); + repository.save(commandeN1); + + List commande = repository.findAll(); + + assertEquals(2, commande.size()); + assertTrue(commande.contains(commandeN1)); + assertTrue(commande.contains(commandeN1)); + } + + + } + + @Nested + @DisplayName("Find operations") + class FindOperations { + + @BeforeEach + void setUpCommande() { + repository.save(commandeN1); + repository.save(commandeN2); + } + + @Test + @DisplayName("FindAll should return all commande") + void testFindAll() { + List commande = repository.findAll(); + + assertEquals(2, commande.size()); + assertTrue(commande.contains(commandeN1)); + assertTrue(commande.contains(commandeN2)); + } + + @Test + @DisplayName("FindById should return commande with matching ID") + void testFindById() { + Optional foundCommande = repository.findById(commandeN1.getCommandeId()); + + assertTrue(foundCommande.isPresent()); + assertEquals(commandeN1.getCommandeId(), foundCommande.getCommandeId()); + assertEquals(commandeN1.getClientId(), foundCommande.getClientId()); + } + + + + } + + + + + @Nested + @DisplayName("Delete operations") + class DeleteOperations { + } + + + + +} + + diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java index 0cd006a..1a49307 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java @@ -4,7 +4,6 @@ import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.LigneCommande; import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidAdressException; import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidCommandeException; import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidLigneCommandeException; -- 2.54.0 From 2ed99a901af4a910e6afd0eeba16aab7c72b2448 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sun, 14 Jun 2026 03:02:52 +0200 Subject: [PATCH 14/23] suite test --- .../repository/CommandeRepositoryTest.java | 40 +++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java index bc40b1c..6f2e8f6 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java @@ -150,7 +150,7 @@ public class CommandeRepositoryTest { assertEquals("rue", savedCommande.getRue()); assertEquals("moi", savedCommande.getVille()); assertEquals("1", savedCommande.getCodePostal()); - assertEquals("1", savedCommande.getPays()); + assertEquals("Russie", savedCommande.getPays()); assertEquals(ModePaiement.POINTS_FIDELITE.name(), savedCommande.getModePaiement()); } @@ -158,16 +158,14 @@ public class CommandeRepositoryTest { @DisplayName("Save multiple customers should add all of them") void testSaveMultipleCommande() { repository.save(commandeN1); - repository.save(commandeN1); + repository.save(commandeN2); List commande = repository.findAll(); assertEquals(2, commande.size()); assertTrue(commande.contains(commandeN1)); - assertTrue(commande.contains(commandeN1)); + assertTrue(commande.contains(commandeN2)); } - - } @Nested @@ -196,10 +194,38 @@ public class CommandeRepositoryTest { Optional foundCommande = repository.findById(commandeN1.getCommandeId()); assertTrue(foundCommande.isPresent()); - assertEquals(commandeN1.getCommandeId(), foundCommande.getCommandeId()); - assertEquals(commandeN1.getClientId(), foundCommande.getClientId()); + assertEquals(commandeN1.getCommandeId(), foundCommande.get().getCommandeId()); + assertEquals(commandeN1.getClientId(), foundCommande.get().getClientId()); } + @Test + void testFindByIdNotFound(){ + UUID nonExistentId = UUID.randomUUID(); + Optional foundCommande = repository.findById(nonExistentId); + + assertTrue(foundCommande.isEmpty()); + } + + + @Test + void testExistsByIdExists(){ + boolean exists = repository.existsById(commandeN1.getCommandeId()); + + assertTrue(exists); + + } + + @Test + void testExistsByIdNotExists(){ + UUID nonExistentId = UUID.randomUUID(); + boolean exists = repository.existsById(nonExistentId); + + assertTrue(exists); + + } + + + } -- 2.54.0 From 0ad7e7103000dfdd3dfe58b2bbf513fc5d7d4771 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sun, 14 Jun 2026 12:45:05 +0200 Subject: [PATCH 15/23] implementation du code --- .../repository/ComandeRepository.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java new file mode 100644 index 0000000..9195f08 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java @@ -0,0 +1,36 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.repository; + +import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Book; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; +import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public class ComandeRepository { + + private final List commande = new ArrayList<>(); + + public List findAll(){return commande;} + + public Commande save(Commande newCommande){ + Optional optionalCommandeWithSameIsbn = this.findById(newCommande.getCommandeId()); + optionalCommandeWithSameIsbn.ifPresent(commande::remove); + this.commande.add(newCommande); + return newCommande; + } + + public Optional findById(UUID uuid){ + return this.commande.stream() + .filter(customer -> customer.getCommandeId().equals(uuid)) + .findFirst(); + } + + public boolean existsById(UUID uuid) { + return this.commande.stream() + .anyMatch(customer -> customer.getCommandeId().equals(uuid)); + } + +} -- 2.54.0 From 69ce78a113a67451c6dc2d610cca8d79eaf20d57 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sun, 14 Jun 2026 13:15:04 +0200 Subject: [PATCH 16/23] test delete --- .../repository/CommandeRepositoryTest.java | 89 +++++++++++++++++-- 1 file changed, 80 insertions(+), 9 deletions(-) diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java index 6f2e8f6..f50e364 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java @@ -15,8 +15,7 @@ import java.util.List; import java.util.Optional; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; public class CommandeRepositoryTest { @@ -220,14 +219,8 @@ public class CommandeRepositoryTest { UUID nonExistentId = UUID.randomUUID(); boolean exists = repository.existsById(nonExistentId); - assertTrue(exists); - + assertFalse(exists); } - - - - - } @@ -238,6 +231,84 @@ public class CommandeRepositoryTest { class DeleteOperations { } + @BeforeEach + void setUpCustomers() { + repository.save(commandeN1); + repository.save(commandeN2); + repository.save(commandeN3); + } + + + + @Test + @DisplayName("Delete should remove the specified customer") + void testDelete() { + repository.delete(commandeN1); + + List commande = repository.findAll(); + + assertEquals(2, commande.size()); + assertFalse(commande.contains(commandeN1)); + assertTrue(commande.contains(commandeN2)); + assertTrue(commande.contains(commandeN3)); + } + + @Test + @DisplayName("DeleteAll should remove all customers") + void testDeleteAll() { + repository.deleteAll(); + + List commande = repository.findAll(); + + assertTrue(commande.isEmpty()); + assertEquals(0, commande.size()); + } + + @Test + @DisplayName("Delete should not throw exception when customer doesn't exist") + void testDeleteNonExistentCustomer() { + + List lignesCommande = new ArrayList<>(); + LigneCommandeInfo commande1 = new LigneCommandeInfo(321); + LigneCommandeInfo commande2 = new LigneCommandeInfo(3); + lignesCommande.add(commande1); + lignesCommande.add(commande2); + + + Commande nonExistentCommande =Commande.builder() + .lignesCommande(lignesCommande) + .rue("non") + .ville("non") + .codePostal("Existent") + .pays("0000") + .modePaiement(ModePaiement.PAYPAL.name()) + .build(); + nonExistentCommande.setRandomUUIDCommande(); + + assertDoesNotThrow(() -> repository.delete(nonExistentCommande)); + + assertEquals(3, repository.findAll().size()); + } + + + @Test + void TestDeleteAllCommandeByCustomerID(){ + repository.deleteById(commandeN1.getClientId()); + + + List commande = repository.findAll(); + + assertEquals(1, commande.size()); + assertFalse(commande.contains(commandeN1)); + assertFalse(commande.contains(commandeN2)); + assertTrue(commande.contains(commandeN3)); + + + } + + + + -- 2.54.0 From 7e8a5522d8403c065008267d69f43ee6093d3769 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sun, 14 Jun 2026 13:26:07 +0200 Subject: [PATCH 17/23] =?UTF-8?q?Implementation=20des=20m=C3=A9thode=20de?= =?UTF-8?q?=20delete=20ainsi=20que=20la=20modification=20des=20test=20pour?= =?UTF-8?q?=20qu'il=20fonctionne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/ComandeRepository.java | 13 ++ .../repository/CommandeRepositoryTest.java | 166 +++++++++++------- 2 files changed, 113 insertions(+), 66 deletions(-) diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java index 9195f08..5aea28e 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java @@ -15,6 +15,11 @@ public class ComandeRepository { public List findAll(){return commande;} + + public void deleteAll() { + commande.clear(); + } + public Commande save(Commande newCommande){ Optional optionalCommandeWithSameIsbn = this.findById(newCommande.getCommandeId()); optionalCommandeWithSameIsbn.ifPresent(commande::remove); @@ -33,4 +38,12 @@ public class ComandeRepository { .anyMatch(customer -> customer.getCommandeId().equals(uuid)); } + public void delete(Commande commande) { + this.commande.remove(commande); + } + + + public void deleteById(UUID uuid) { + this.commande.removeIf(commande -> commande.getClientId().equals(uuid)); + } } diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java index f50e364..5f25fa1 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java @@ -67,7 +67,6 @@ public class CommandeRepositoryTest { .pays(pays) .modePaiement(modePayement) .build(); - commandeN2.setRandomUUID(); commandeN2.setRandomUUIDCommande(); List lignesCommande3 = new ArrayList<>(); @@ -229,79 +228,117 @@ public class CommandeRepositoryTest { @Nested @DisplayName("Delete operations") class DeleteOperations { - } - - @BeforeEach - void setUpCustomers() { - repository.save(commandeN1); - repository.save(commandeN2); - repository.save(commandeN3); - } - - @Test - @DisplayName("Delete should remove the specified customer") - void testDelete() { - repository.delete(commandeN1); - - List commande = repository.findAll(); - - assertEquals(2, commande.size()); - assertFalse(commande.contains(commandeN1)); - assertTrue(commande.contains(commandeN2)); - assertTrue(commande.contains(commandeN3)); - } - - @Test - @DisplayName("DeleteAll should remove all customers") - void testDeleteAll() { - repository.deleteAll(); - - List commande = repository.findAll(); - - assertTrue(commande.isEmpty()); - assertEquals(0, commande.size()); - } - - @Test - @DisplayName("Delete should not throw exception when customer doesn't exist") - void testDeleteNonExistentCustomer() { - - List lignesCommande = new ArrayList<>(); - LigneCommandeInfo commande1 = new LigneCommandeInfo(321); - LigneCommandeInfo commande2 = new LigneCommandeInfo(3); - lignesCommande.add(commande1); - lignesCommande.add(commande2); + @BeforeEach + void setUpCustomers() { + repository.save(commandeN1); + repository.save(commandeN2); + repository.save(commandeN3); + } - Commande nonExistentCommande =Commande.builder() - .lignesCommande(lignesCommande) - .rue("non") - .ville("non") - .codePostal("Existent") - .pays("0000") - .modePaiement(ModePaiement.PAYPAL.name()) - .build(); - nonExistentCommande.setRandomUUIDCommande(); + @Test + @DisplayName("Delete should remove the specified customer") + void testDelete() { + repository.delete(commandeN1); - assertDoesNotThrow(() -> repository.delete(nonExistentCommande)); + List commande = repository.findAll(); - assertEquals(3, repository.findAll().size()); - } + assertEquals(2, commande.size()); + assertFalse(commande.contains(commandeN1)); + assertTrue(commande.contains(commandeN2)); + assertTrue(commande.contains(commandeN3)); + } + + @Test + @DisplayName("DeleteAll should remove all customers") + void testDeleteAll() { + repository.deleteAll(); + + List commande = repository.findAll(); + + assertTrue(commande.isEmpty()); + assertEquals(0, commande.size()); + } + + @Test + @DisplayName("Delete should not throw exception when customer doesn't exist") + void testDeleteNonExistentCustomer() { + + List lignesCommande = new ArrayList<>(); + LigneCommandeInfo commande1 = new LigneCommandeInfo(321); + LigneCommandeInfo commande2 = new LigneCommandeInfo(3); + lignesCommande.add(commande1); + lignesCommande.add(commande2); - @Test - void TestDeleteAllCommandeByCustomerID(){ - repository.deleteById(commandeN1.getClientId()); + Commande nonExistentCommande = Commande.builder() + .lignesCommande(lignesCommande) + .rue("non") + .ville("non") + .codePostal("Existent") + .pays("0000") + .modePaiement(ModePaiement.PAYPAL.name()) + .build(); + nonExistentCommande.setRandomUUIDCommande(); + + assertDoesNotThrow(() -> repository.delete(nonExistentCommande)); + + assertEquals(3, repository.findAll().size()); + } - List commande = repository.findAll(); + @Test + void TestDeleteAllCommandeByCustomerID() { + System.out.println(commandeN1.getClientId()); + System.out.println(commandeN2.getClientId()); + System.out.println(commandeN3.getClientId()); + repository.deleteById(commandeN1.getClientId()); - assertEquals(1, commande.size()); - assertFalse(commande.contains(commandeN1)); - assertFalse(commande.contains(commandeN2)); - assertTrue(commande.contains(commandeN3)); + + List commande = repository.findAll(); + + assertEquals(1, commande.size()); + assertFalse(commande.contains(commandeN1)); + assertFalse(commande.contains(commandeN2)); + assertTrue(commande.contains(commandeN3)); + + + } + + + @Test + void TestDeleteAllCommandeByNonExistentCustomerID() { + + + List lignesCommande = new ArrayList<>(); + LigneCommandeInfo commande1 = new LigneCommandeInfo(321); + LigneCommandeInfo commande2 = new LigneCommandeInfo(3); + lignesCommande.add(commande1); + lignesCommande.add(commande2); + + + Commande nonExistentCommande = Commande.builder() + .lignesCommande(lignesCommande) + .rue("non") + .ville("non") + .codePostal("Existent") + .pays("0000") + .modePaiement(ModePaiement.PAYPAL.name()) + .build(); + nonExistentCommande.setRandomUUIDCommande(); + + + repository.deleteById(nonExistentCommande.getClientId()); + + + assertDoesNotThrow(() -> repository.findAll()); + + assertEquals(3, repository.findAll().size()); + + + } } @@ -309,9 +346,6 @@ public class CommandeRepositoryTest { - - - } -- 2.54.0 From 73e066b593ebc6fee12e69e786b48ff992452a25 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sun, 14 Jun 2026 17:33:46 +0200 Subject: [PATCH 18/23] refactorr d'un nom de fichier --- .../dev62/mylibrary/commande/ComandeInfo.java | 6 -- .../dev62/mylibrary/commande/CommandeDTO.java | 6 ++ .../mylibrary/commande/CommandeInfo.java | 6 ++ .../commande/converter/CommandeConverter.java | 7 +- .../commande/validator/CommandeValidator.java | 21 +++--- .../converter/CommandeConverterTest.java | 5 +- .../mylibrary/commande/exception/Test.java | 4 - .../repository/CommandeRepositoryTest.java | 2 - .../commande/usecase/CommandeUseCase.java | 74 +++++++++++++++++++ .../validator/CommandeValidatorTest.java | 8 +- 10 files changed, 105 insertions(+), 34 deletions(-) delete mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeInfo.java delete mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/Test.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java deleted file mode 100644 index a116f9d..0000000 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/ComandeInfo.java +++ /dev/null @@ -1,6 +0,0 @@ -package fr.iut_fbleau.but3.dev62.mylibrary.commande; - -import java.util.List; - -public record ComandeInfo(List listeLigne ,String modePayement) { -} 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 5be3516..dd2f14c 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,4 +16,10 @@ public class CommandeDTO { private String codePostal; private String pays; private String modePaiement; + + + private UUID commandeId ; + private double montantTotal ; + private Integer pointsFideliteGagnes ; + } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeInfo.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeInfo.java new file mode 100644 index 0000000..6d691b0 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/CommandeInfo.java @@ -0,0 +1,6 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande; + +import java.util.List; + +public record CommandeInfo(List listeLigne , String modePayement) { +} 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 dbaa926..6ddabd8 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 @@ -1,15 +1,14 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.converter; import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeDTO; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; public final class CommandeConverter { - public static Commande toDomain(ComandeInfo commandeInfo, AdresseInfo adressInfo, String modePaiement) { + public static Commande toDomain(CommandeInfo commandeInfo, AdresseInfo adressInfo, String modePaiement) { return Commande.builder() .lignesCommande(commandeInfo.listeLigne()) .rue(adressInfo.rue()) @@ -20,7 +19,7 @@ public final class CommandeConverter { .build(); } - public static CommandeDTO toDTO(ComandeInfo commandeInfo, AdresseInfo adressInfo, String modePaiement) { + public static CommandeDTO toDTO(CommandeInfo commandeInfo, AdresseInfo adressInfo, String modePaiement) { return CommandeDTO.builder() .lignesCommande(commandeInfo.listeLigne()) .rue(adressInfo.rue()) diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidator.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidator.java index 3c6345c..f93161c 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidator.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidator.java @@ -1,13 +1,12 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.validator; import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidAdressException; import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidCommandeException; import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidLigneCommandeException; -import java.util.List; import java.util.Objects; public final class CommandeValidator { @@ -28,10 +27,10 @@ public final class CommandeValidator { } } - public static void validate(ComandeInfo comandeInfo) { + public static void validate(CommandeInfo commandeInfo) { - validateModePaiement(comandeInfo); - validateListLigneCommande(comandeInfo); + validateModePaiement(commandeInfo); + validateListLigneCommande(commandeInfo); } public static void validate(AdresseInfo adresseInfo) { @@ -43,16 +42,16 @@ public final class CommandeValidator { - private static void validateModePaiement(ComandeInfo comandeInfo) { - if(comandeInfo.modePayement()!="CB"&& comandeInfo.modePayement()!="PAYPAL"&&comandeInfo.modePayement()!="POINTS_FIDELITE"){ + private static void validateModePaiement(CommandeInfo commandeInfo) { + if(commandeInfo.modePayement()!="CB"&& commandeInfo.modePayement()!="PAYPAL"&& commandeInfo.modePayement()!="POINTS_FIDELITE"){ throw new NotValidCommandeException(MODE_PAIEMENT_IS_NOT_VALIDE); } } - private static void validateListLigneCommande(ComandeInfo comandeInfo) { - if (comandeInfo.listeLigne() == null - || comandeInfo.listeLigne().isEmpty() - || comandeInfo.listeLigne().stream().anyMatch(Objects::isNull)){ + private static void validateListLigneCommande(CommandeInfo commandeInfo) { + if (commandeInfo.listeLigne() == null + || commandeInfo.listeLigne().isEmpty() + || commandeInfo.listeLigne().stream().anyMatch(Objects::isNull)){ throw new NotValidCommandeException(LIST_LIGNE_COMANDE_IS_NOT_VALIDE); } diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java index 7ee561d..2381587 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/converter/CommandeConverterTest.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; -import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -22,7 +21,7 @@ public class CommandeConverterTest { LigneCommandeInfo ligne2 = new LigneCommandeInfo(14); listLigne.add(ligne); listLigne.add(ligne2); - ComandeInfo commandeInfo = new ComandeInfo(listLigne,modePaiement); + CommandeInfo commandeInfo = new CommandeInfo(listLigne,modePaiement); AdresseInfo adressInfo = new AdresseInfo("rue du cheval","La Rochette","77000","France"); @@ -46,7 +45,7 @@ public class CommandeConverterTest { LigneCommandeInfo ligne2 = new LigneCommandeInfo(14); listLigne.add(ligne); listLigne.add(ligne2); - ComandeInfo commandeInfo = new ComandeInfo(listLigne,modePaiement); + CommandeInfo commandeInfo = new CommandeInfo(listLigne,modePaiement); AdresseInfo adressInfo = new AdresseInfo("rue du cheval","La Rochette","77000","France"); diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/Test.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/Test.java deleted file mode 100644 index dc8e59a..0000000 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/Test.java +++ /dev/null @@ -1,4 +0,0 @@ -package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception; - -public class Test { -} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java index 5f25fa1..a0ab3cc 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java @@ -3,8 +3,6 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.repository; import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; -import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer; -import fr.iut_fbleau.but3.dev62.mylibrary.customer.repository.CustomerRepository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java new file mode 100644 index 0000000..66fc09e --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java @@ -0,0 +1,74 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.usecase; + +import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.repository.ComandeRepository; +import fr.iut_fbleau.but3.dev62.mylibrary.customer.usecase.CustomerUseCase; +import org.junit.jupiter.api.BeforeEach; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class CommandeUseCase { + + @Mock + private ComandeRepository comandeRepository; + + + @InjectMocks + private CommandeUseCase commandeUseCase; + + private UUID commandeId; + private UUID clientId; + private Commande testCommande; + private CommandeInfo validCommandeInfo; + private LigneCommandeInfo validLigneCommandeInfo; + private AdresseInfo validAdresseInfo; + + @BeforeEach + void setUp() { + + clientId = UUID.randomUUID(); + commandeId = UUID.randomUUID(); + List lignesCommande = new ArrayList<>(); + LigneCommandeInfo commande1 = new LigneCommandeInfo(12); + LigneCommandeInfo commande2 = new LigneCommandeInfo(13); + lignesCommande.add(commande1); + lignesCommande.add(commande2); + String rue = "rue du chien"; + String ville = "LKa Rochette"; + String codePostal = "7700"; + String pays = "France"; + String modePayement = ModePaiement.CB.name(); + + testCommande = Commande.builder() + .clientId(clientId) + .lignesCommande(lignesCommande) + .rue(rue) + .ville(ville) + .codePostal(codePostal) + .pays(pays) + .modePaiement(modePayement) + .commandeId(commandeId) + .build(); + + + validCommandeInfo = new CommandeInfo(lignesCommande,ModePaiement.CB.name()); + validLigneCommandeInfo= new LigneCommandeInfo(12); + validAdresseInfo = new AdresseInfo("rue du chien","LKa Rochette","7700","France"); + } + + + @Nested + + + + + +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java index 1a49307..6faadeb 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/validator/CommandeValidatorTest.java @@ -1,7 +1,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.validator; import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.ComandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; import fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.NotValidAdressException; @@ -47,7 +47,7 @@ public class CommandeValidatorTest { List listeLigne = new ArrayList<>(); listeLigne.add(ligneCommandeValide); String modePaiementValide = modePaiement.toString(); - ComandeInfo commandeValid = new ComandeInfo(listeLigne, modePaiementValide); + CommandeInfo commandeValid = new CommandeInfo(listeLigne, modePaiementValide); assertDoesNotThrow(() -> CommandeValidator.validate(commandeValid)); } @@ -59,7 +59,7 @@ public class CommandeValidatorTest { List listeLigne = new ArrayList<>(); listeLigne.add(ligneCommandeValide); String modePaiementValide = modePaiementError; - ComandeInfo commandeValid = new ComandeInfo(listeLigne, modePaiementValide); + CommandeInfo commandeValid = new CommandeInfo(listeLigne, modePaiementValide); NotValidCommandeException exception = assertThrows( NotValidCommandeException.class, @@ -72,7 +72,7 @@ public class CommandeValidatorTest { @MethodSource("provideInvalidOrderLists") void testValidateNotValideListLigneCommande(List listeLigne) { String modePaiementValide = ModePaiement.CB.toString(); - ComandeInfo commandeValid = new ComandeInfo(listeLigne, modePaiementValide); + CommandeInfo commandeValid = new CommandeInfo(listeLigne, modePaiementValide); NotValidCommandeException exception = assertThrows( NotValidCommandeException.class, () -> CommandeValidator.validate(commandeValid) -- 2.54.0 From ae8daf5e2ce2c2acf1dd5eea58165764421137d4 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sun, 14 Jun 2026 19:42:04 +0200 Subject: [PATCH 19/23] refactor nom fichier --- .../commande/converter/CommandeConverter.java | 13 ++++++++++++- ...mandeRepository.java => CommandeRepository.java} | 4 +--- .../commande/repository/CommandeRepositoryTest.java | 4 ++-- 3 files changed, 15 insertions(+), 6 deletions(-) rename src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/{ComandeRepository.java => CommandeRepository.java} (88%) 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 6ddabd8..f798a6e 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 @@ -15,7 +15,18 @@ public final class CommandeConverter { .ville(adressInfo.ville()) .codePostal(adressInfo.codePostal()) .pays(adressInfo.pays()) - .modePaiement(modePaiement) + .modePaiement(commandeInfo.modePayement()) + .build(); + } + + public static Commande toDomain(CommandeInfo commandeInfo, AdresseInfo adressInfo) { + return Commande.builder() + .lignesCommande(commandeInfo.listeLigne()) + .rue(adressInfo.rue()) + .ville(adressInfo.ville()) + .codePostal(adressInfo.codePostal()) + .pays(adressInfo.pays()) + .modePaiement(commandeInfo.modePayement()) .build(); } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepository.java similarity index 88% rename from src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java rename to src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepository.java index 5aea28e..39ad758 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/ComandeRepository.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepository.java @@ -1,15 +1,13 @@ package fr.iut_fbleau.but3.dev62.mylibrary.commande.repository; -import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Book; import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; -import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.UUID; -public class ComandeRepository { +public class CommandeRepository { private final List commande = new ArrayList<>(); diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java index a0ab3cc..55d473e 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/repository/CommandeRepositoryTest.java @@ -17,14 +17,14 @@ import static org.junit.jupiter.api.Assertions.*; public class CommandeRepositoryTest { - private ComandeRepository repository; + private CommandeRepository repository; private Commande commandeN1; private Commande commandeN2; private Commande commandeN3; @BeforeEach void setUp() { - repository = new ComandeRepository(); + repository = new CommandeRepository(); UUID clientId = UUID.randomUUID(); List lignesCommande = new ArrayList<>(); -- 2.54.0 From 9c1fe4016f77d05dafbb6796968ae72a0dc9a678 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sun, 14 Jun 2026 19:42:48 +0200 Subject: [PATCH 20/23] =?UTF-8?q?d=C3=A9but=20test=20usecase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commande/usecase/CommandeUseCase.java | 74 --------- .../commande/usecase/TestCommandeUseCase.java | 156 ++++++++++++++++++ 2 files changed, 156 insertions(+), 74 deletions(-) delete mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/TestCommandeUseCase.java diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java deleted file mode 100644 index 66fc09e..0000000 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java +++ /dev/null @@ -1,74 +0,0 @@ -package fr.iut_fbleau.but3.dev62.mylibrary.commande.usecase; - -import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.repository.ComandeRepository; -import fr.iut_fbleau.but3.dev62.mylibrary.customer.usecase.CustomerUseCase; -import org.junit.jupiter.api.BeforeEach; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -public class CommandeUseCase { - - @Mock - private ComandeRepository comandeRepository; - - - @InjectMocks - private CommandeUseCase commandeUseCase; - - private UUID commandeId; - private UUID clientId; - private Commande testCommande; - private CommandeInfo validCommandeInfo; - private LigneCommandeInfo validLigneCommandeInfo; - private AdresseInfo validAdresseInfo; - - @BeforeEach - void setUp() { - - clientId = UUID.randomUUID(); - commandeId = UUID.randomUUID(); - List lignesCommande = new ArrayList<>(); - LigneCommandeInfo commande1 = new LigneCommandeInfo(12); - LigneCommandeInfo commande2 = new LigneCommandeInfo(13); - lignesCommande.add(commande1); - lignesCommande.add(commande2); - String rue = "rue du chien"; - String ville = "LKa Rochette"; - String codePostal = "7700"; - String pays = "France"; - String modePayement = ModePaiement.CB.name(); - - testCommande = Commande.builder() - .clientId(clientId) - .lignesCommande(lignesCommande) - .rue(rue) - .ville(ville) - .codePostal(codePostal) - .pays(pays) - .modePaiement(modePayement) - .commandeId(commandeId) - .build(); - - - validCommandeInfo = new CommandeInfo(lignesCommande,ModePaiement.CB.name()); - validLigneCommandeInfo= new LigneCommandeInfo(12); - validAdresseInfo = new AdresseInfo("rue du chien","LKa Rochette","7700","France"); - } - - - @Nested - - - - - -} 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 new file mode 100644 index 0000000..85df19a --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/TestCommandeUseCase.java @@ -0,0 +1,156 @@ +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.entity.Book; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.entity.Commande; +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; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; + + + +@ExtendWith(MockitoExtension.class) +public class TestCommandeUseCase { + + @Mock + private CommandeRepository commandeRepository; + + + @InjectMocks + private CommandeUseCase commandeUseCase; + + private UUID commandeId; + private UUID clientId; + private Commande testCommande; + private CommandeInfo validCommandeInfo; + private LigneCommandeInfo validLigneCommandeInfo; + private AdresseInfo validAdresseInfo; + + @BeforeEach + void setUp() { + + clientId = UUID.randomUUID(); + commandeId = UUID.randomUUID(); + List lignesCommande = new ArrayList<>(); + LigneCommandeInfo commande1 = new LigneCommandeInfo(12); + LigneCommandeInfo commande2 = new LigneCommandeInfo(13); + lignesCommande.add(commande1); + lignesCommande.add(commande2); + String rue = "rue du chien"; + String ville = "LKa Rochette"; + String codePostal = "7700"; + String pays = "France"; + String modePayement = ModePaiement.CB.name(); + + testCommande = Commande.builder() + .clientId(clientId) + .lignesCommande(lignesCommande) + .rue(rue) + .ville(ville) + .codePostal(codePostal) + .pays(pays) + .modePaiement(modePayement) + .commandeId(commandeId) + .build(); + + + validCommandeInfo = new CommandeInfo(lignesCommande,ModePaiement.CB.name()); + validLigneCommandeInfo= new LigneCommandeInfo(12); + validAdresseInfo = new AdresseInfo("rue du chien","LKa Rochette","7700","France"); + } + + + @Nested + class RegisterCommandeTest{ + + + @Test + void testRegisterCommandeWhitValidData(){ + when(commandeRepository.save(any(Commande.class))).thenReturn(testCommande); + + UUID registeredIsbn = commandeUseCase.registerCommande(validCommandeInfo,validAdresseInfo); + + assertNotNull(registeredIsbn); + assertEquals(commandeId, registeredIsbn); + verify(commandeRepository, times(1)).save(any(Commande.class)); + } + + @Test + void testRegisterCommandeWhitInvalidData(){ + CommandeInfo invalidCommandeInfo = new CommandeInfo(new ArrayList(),"pas bon "); + AdresseInfo invalidAdressInfo = new AdresseInfo(""," "," ",""); + + assertThrows(NotValidCommandeException.class, + ()->commandeUseCase.registerCommande(invalidCommandeInfo,invalidAdressInfo)); + verify(commandeRepository, never()).save(any(Commande.class)); + } + + + + } + + + @Nested + class FindCommandeTests { + @Test + @DisplayName("Should return book when isbn exists") + void testFindCommandByUUID() { + when(commandeRepository.findById(testCommande.getCommandeId())).thenReturn(Optional.of(testCommande)); + + Optional foundCommande = commandeUseCase.findCommandByUUID(testCommande.getCommandeId()); + + assertTrue(foundCommande.isPresent()); + assertEquals(testCommande.getCommandeId(), foundCommande.get().getIsbn()); + verify(commandeRepository, times(1)).findById(testCommande.getCommandeId()); + } + + + @Test + @DisplayName("Should return empty Optional when isbn doesn't exist") + void testFindCommandByUUIDNotFound() { + UUID uuid = UUID.randomUUID(); + when(commandeRepository.findById(uuid)).thenReturn(Optional.empty()); + + Optional foundCommande = commandeUseCase.findCommandByUUID(uuid); + + assertTrue(foundCommande.isEmpty()); + verify(commandeRepository, times(1)).findById(uuid); + } + } + + @Nested + class UpdateCommandeTests { + + } + + + @Nested + class DeleteCommandeTests { + + } + + + + + +} -- 2.54.0 From 0af1c20659e81a5cd0262698a474dde8b89c792e Mon Sep 17 00:00:00 2001 From: lebreton Date: Sun, 14 Jun 2026 19:50:28 +0200 Subject: [PATCH 21/23] suite de l'impementation --- .../commande/converter/CommandeConverter.java | 11 +++++ .../commande/usecase/CommandeUseCase.java | 41 +++++++++++++++++++ .../commande/usecase/TestCommandeUseCase.java | 11 ++--- 3 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java 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 f798a6e..d5ecd27 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 @@ -41,4 +41,15 @@ public final class CommandeConverter { .build(); } + public static CommandeDTO toDTO(Commande commande) { + return CommandeDTO.builder() + .lignesCommande(commande.getLignesCommande()) + .rue(commande.getRue()) + .ville(commande.getVille()) + .codePostal(commande.getCodePostal()) + .pays(commande.getPays()) + .modePaiement(commande.getModePaiement()) + .build(); + } + } 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 new file mode 100644 index 0000000..b94841d --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/usecase/CommandeUseCase.java @@ -0,0 +1,41 @@ +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.repository.CommandeRepository; +import fr.iut_fbleau.but3.dev62.mylibrary.commande.validator.CommandeValidator; + +import java.util.Optional; +import java.util.UUID; + +public class CommandeUseCase { + + private final CommandeRepository commandeRepository; + + public CommandeUseCase(CommandeRepository commandeRepository) { + this.commandeRepository = commandeRepository; + } + + + public UUID registerCommande(CommandeInfo validCommandeInfo, AdresseInfo validAdresseInfo){ + CommandeValidator.validate(validCommandeInfo); + CommandeValidator.validate(validAdresseInfo); + + Commande commandeToRegister = CommandeConverter.toDomain(validCommandeInfo,validAdresseInfo); + Commande commandeToRegistered = commandeRepository.save(commandeToRegister) ; + return commandeToRegistered.getCommandeId(); + + } + + public Optional findCommandByUUID(UUID uuid) { + Optional optionalCommande = commandeRepository.findById(uuid); + return optionalCommande.map(CommandeConverter::toDTO); + } + +} 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 85df19a..c0c224b 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,10 +2,7 @@ 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.entity.Book; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.AdresseInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.CommandeInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.LigneCommandeInfo; -import fr.iut_fbleau.but3.dev62.mylibrary.commande.ModePaiement; +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.NotValidCommandeException; import fr.iut_fbleau.but3.dev62.mylibrary.commande.repository.CommandeRepository; @@ -117,10 +114,10 @@ public class TestCommandeUseCase { void testFindCommandByUUID() { when(commandeRepository.findById(testCommande.getCommandeId())).thenReturn(Optional.of(testCommande)); - Optional foundCommande = commandeUseCase.findCommandByUUID(testCommande.getCommandeId()); + Optional foundCommande = commandeUseCase.findCommandByUUID(testCommande.getCommandeId()); assertTrue(foundCommande.isPresent()); - assertEquals(testCommande.getCommandeId(), foundCommande.get().getIsbn()); + assertEquals(testCommande.getCommandeId(), foundCommande.get().getCommandeId()); verify(commandeRepository, times(1)).findById(testCommande.getCommandeId()); } @@ -131,7 +128,7 @@ public class TestCommandeUseCase { UUID uuid = UUID.randomUUID(); when(commandeRepository.findById(uuid)).thenReturn(Optional.empty()); - Optional foundCommande = commandeUseCase.findCommandByUUID(uuid); + Optional foundCommande = commandeUseCase.findCommandByUUID(uuid); assertTrue(foundCommande.isEmpty()); verify(commandeRepository, times(1)).findById(uuid); -- 2.54.0 From b0c54a60960d9cdbc3bd82da02d7fd8cb5366bf6 Mon Sep 17 00:00:00 2001 From: felix-vi Date: Sun, 14 Jun 2026 21:26:14 +0200 Subject: [PATCH 22/23] =?UTF-8?q?:white=5Fcheck=5Fmark:=20cr=C3=A9ation=20?= =?UTF-8?q?des=20test=20manquants?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../valid/CommandeNotFoundEsceptionTest.java | 49 ++++++++ .../commande/usecase/TestCommandeUseCase.java | 117 ++++++++++++++++-- 2 files changed, 155 insertions(+), 11 deletions(-) create mode 100644 src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/CommandeNotFoundEsceptionTest.java 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 new file mode 100644 index 0000000..44b103b --- /dev/null +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/commande/exception/valid/CommandeNotFoundEsceptionTest.java @@ -0,0 +1,49 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.commande.exception.valid; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CommandeNotFoundEsceptionTest { + + @Test + @DisplayName("Exception message should contain the UUID provided") + void testExceptionMessageContainsUUID() { + UUID uuid = UUID.randomUUID(); + + CommandeNotFoundException exception = new CommandeNotFoundException(uuid); + + String expectedMessage = String.format("The commande with id %s does not exist", uuid); + assertEquals(expectedMessage, exception.getMessage()); + } + + @Test + @DisplayName("Exception should use the correct constant message format") + void testExceptionUsesConstantMessageFormat() { + UUID uuid = UUID.randomUUID(); + + CommandeNotFoundException exception = new CommandeNotFoundException(uuid); + + String expectedFormatWithPlaceholder = "The commande with id {0} does not exist"; + assertEquals(CommandeNotFoundException.THE_COMMANDE_WITH_ID_DOES_NOT_EXIST_MESSAGE, + expectedFormatWithPlaceholder); + assertTrue(exception.getMessage().contains(uuid.toString())); + } + + @Test + @DisplayName("Exception should be properly thrown and caught") + void testExceptionCanBeThrownAndCaught() { + UUID uuid = UUID.randomUUID(); + + try { + throw new CommandeNotFoundException(uuid); + } catch (CommandeNotFoundException e) { + String expectedMessage = String.format("The commande with id %s does not exist", uuid); + assertEquals(expectedMessage, e.getMessage()); + } + } +} 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 c0c224b..6550a81 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 @@ -1,7 +1,5 @@ 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.entity.Book; 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.NotValidCommandeException; @@ -42,22 +40,30 @@ public class TestCommandeUseCase { private CommandeInfo validCommandeInfo; private LigneCommandeInfo validLigneCommandeInfo; private AdresseInfo validAdresseInfo; + private List lignesCommande; + private LigneCommandeInfo commande1; + private LigneCommandeInfo commande2; + private String rue; + private String ville; + private String codePostal; + private String pays; + private String modePayement; @BeforeEach void setUp() { clientId = UUID.randomUUID(); commandeId = UUID.randomUUID(); - List lignesCommande = new ArrayList<>(); - LigneCommandeInfo commande1 = new LigneCommandeInfo(12); - LigneCommandeInfo commande2 = new LigneCommandeInfo(13); + lignesCommande = new ArrayList<>(); + commande1 = new LigneCommandeInfo(12); + commande2 = new LigneCommandeInfo(13); lignesCommande.add(commande1); lignesCommande.add(commande2); - String rue = "rue du chien"; - String ville = "LKa Rochette"; - String codePostal = "7700"; - String pays = "France"; - String modePayement = ModePaiement.CB.name(); + rue = "rue du chien"; + ville = "LKa Rochette"; + codePostal = "7700"; + pays = "France"; + modePayement = ModePaiement.CB.name(); testCommande = Commande.builder() .clientId(clientId) @@ -121,7 +127,6 @@ public class TestCommandeUseCase { verify(commandeRepository, times(1)).findById(testCommande.getCommandeId()); } - @Test @DisplayName("Should return empty Optional when isbn doesn't exist") void testFindCommandByUUIDNotFound() { @@ -137,13 +142,103 @@ public class TestCommandeUseCase { @Nested class UpdateCommandeTests { + @Test + @DisplayName("Should update commande when valid data is provided") + void testUpdateCommandeWithValidData() throws CommandeNotFoundException, NotValidCommandeException { + when(commandeRepository.findById(commandeId)).thenReturn(Optional.of(testCommande)); + Commande updatedCommande = Commande.builder() + .clientId(clientId) + .lignesCommande(lignesCommande) + .rue(rue) + .ville("Fontainebleau") + .codePostal("77300") + .pays(pays) + .modePaiement(modePayement) + .commandeId(commandeId) + .build(); + + when(commandeRepository.save(any(Commande.class))).thenReturn(updatedCommande); + + List updatelignesCommande = new ArrayList<>(); + LigneCommandeInfo updateLigneCommandeInfo= new LigneCommandeInfo(12); + updatelignesCommande.add(updateLigneCommandeInfo); + CommandeInfo updateInfo = new CommandeInfo(updatelignesCommande,ModePaiement.CB.name()); + AdresseInfo updateAdresseInfo = new AdresseInfo("rue du chien","Fontainebleau","77300","France"); + + CommandeDTO result = commandeUseCase.updateCommande(commandeId, updateInfo, updateAdresseInfo); + + assertNotNull(result); + assertEquals(commandeId, result.getCommandeId()); + assertEquals("Fontainebleau", result.getVille()); + assertEquals("77300", result.getCodePostal()); + verify(commandeRepository, times(1)).findById(commandeId); + verify(commandeRepository, times(1)).save(any(Commande.class)); + } + + @Test + @DisplayName("Should throw exception when commande ID doesn't exist") + void testUpdateCommandeNotFound() { + UUID nonExistentId = UUID.randomUUID(); + when(commandeRepository.findById(nonExistentId)).thenReturn(Optional.empty()); + + List updatelignesCommande = new ArrayList<>(); + LigneCommandeInfo updateLigneCommandeInfo= new LigneCommandeInfo(12); + updatelignesCommande.add(updateLigneCommandeInfo); + CommandeInfo updateInfo = new CommandeInfo(updatelignesCommande,ModePaiement.CB.name()); + AdresseInfo updateAdresseInfo = new AdresseInfo("rue du chien","Fontainebleau","77300","France"); + + assertThrows(CommandeNotFoundException.class, + () -> commandeUseCase.updateCommande(nonExistentId, updateInfo, updateAdresseInfo)); + + verify(commandeRepository, times(1)).findById(nonExistentId); + verify(commandeRepository, never()).save(any(Commande.class)); + } + + @Test + @DisplayName("Should throw exception when update data is not valid") + void testUpdateCommandeWithInvalidData() { + List updatelignesCommande = new ArrayList<>(); + LigneCommandeInfo updateLigneCommandeInfo= new LigneCommandeInfo(12); + updatelignesCommande.add(updateLigneCommandeInfo); + CommandeInfo invalidUpdateInfo = new CommandeInfo(updatelignesCommande, "CARTE"); + AdresseInfo updateAdresseInfo = new AdresseInfo("rue du chien","Fontainebleau","77300","France"); + + assertThrows(NotValidCommandeException.class, + () -> commandeUseCase.updateCommande(commandeId, invalidUpdateInfo, updateAdresseInfo)); + + verify(commandeRepository, never()).findById(any(UUID.class)); + verify(commandeRepository, never()).save(any(Commande.class)); + } } @Nested class DeleteCommandeTests { + @Test + @DisplayName("Should delete commande when ID exists") + void testDeleteCommande() throws CommandeNotFoundException { + when(commandeRepository.findById(commandeId)).thenReturn(Optional.of(testCommande)); + doNothing().when(commandeRepository).delete(testCommande); + commandeUseCase.deleteCommande(commandeId); + + verify(commandeRepository, times(1)).findById(commandeId); + verify(commandeRepository, times(1)).delete(testCommande); + } + + @Test + @DisplayName("Should throw exception when commande ID doesn't exist") + void testDeleteCustomerNotFound() { + UUID nonExistentId = UUID.randomUUID(); + when(commandeRepository.findById(nonExistentId)).thenReturn(Optional.empty()); + + assertThrows(CommandeNotFoundException.class, + () -> commandeUseCase.deleteCommande(nonExistentId)); + + verify(commandeRepository, times(1)).findById(nonExistentId); + verify(commandeRepository, never()).delete(any(Commande.class)); + } } -- 2.54.0 From cffad9475aa14329db059a5b6b65dee9061b0a83 Mon Sep 17 00:00:00 2001 From: felix-vi Date: Sun, 14 Jun 2026 21:43:17 +0200 Subject: [PATCH 23/23] =?UTF-8?q?:white=5Fcheck=5Fmark:=20test=20pass?= =?UTF-8?q?=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; -- 2.54.0