From 9c1fe4016f77d05dafbb6796968ae72a0dc9a678 Mon Sep 17 00:00:00 2001 From: lebreton Date: Sun, 14 Jun 2026 19:42:48 +0200 Subject: [PATCH] =?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 { + + } + + + + + +}