From 8c79d986d50cf6e6e1427fb663638fe1d1134efb Mon Sep 17 00:00:00 2001 From: "maxime.rocher" Date: Sun, 6 Apr 2025 22:11:44 +0200 Subject: [PATCH] tests pt. 2 --- .../controller/QuoteControllerTest.java | 73 +---------- .../controller/RecordQuizControllerTest.java | 118 ++++++++++++++++++ 2 files changed, 121 insertions(+), 70 deletions(-) create mode 100644 src/test/java/com/example/wfwebapi/controller/RecordQuizControllerTest.java diff --git a/src/test/java/com/example/wfwebapi/controller/QuoteControllerTest.java b/src/test/java/com/example/wfwebapi/controller/QuoteControllerTest.java index 331a6cf..ddd21e4 100644 --- a/src/test/java/com/example/wfwebapi/controller/QuoteControllerTest.java +++ b/src/test/java/com/example/wfwebapi/controller/QuoteControllerTest.java @@ -26,6 +26,7 @@ class QuoteControllerTest { @Autowired private UserRepository userRepository; @Autowired private SourceRepository sourceRepository; @Autowired private CaracterRepository caracterRepository; + @Autowired private ImageRepository imageRepository; private User user; private Source source; @@ -41,9 +42,11 @@ class QuoteControllerTest { userRepository.deleteAll(); sourceRepository.deleteAll(); caracterRepository.deleteAll(); + imageRepository.deleteAll(); Image img = new Image(); img.setImgPath("img.png"); + img = imageRepository.save(img); // correction ici caracter = new Caracter(); caracter.setCaracter("Test Character"); @@ -64,58 +67,6 @@ class QuoteControllerTest { user = userRepository.save(user); } - @Test - void testCreateAndGetQuote() { - Quote quote = new Quote(); - quote.setContent("Ceci est une citation."); - quote.setLangue("fr"); - quote.setLikes(15); - quote.setIsValide(true); - quote.setReason("valide"); - quote.setCaracter(caracter); - quote.setSource(source); - quote.setUserVerif(user); - - ResponseEntity postResponse = restTemplate.postForEntity( - getUrl(""), quote, EntityModel.class); - assertEquals(HttpStatus.OK, postResponse.getStatusCode()); - assertNotNull(postResponse.getBody()); - - Long id = ((Number)((LinkedHashMap)postResponse.getBody().getContent()).get("id")).longValue(); - ResponseEntity getResponse = restTemplate.getForEntity( - getUrl("/" + id), EntityModel.class); - assertEquals(HttpStatus.OK, getResponse.getStatusCode()); - } - - @Test - void testUpdateQuote() { - Quote quote = new Quote(); - quote.setContent("Ancienne"); - quote.setLangue("fr"); - quote.setLikes(1); - quote.setIsValide(false); - quote.setReason("..."); - quote.setCaracter(caracter); - quote.setSource(source); - quote.setUserVerif(user); - quote = quoteRepository.save(quote); - - quote.setContent("Nouvelle version"); - quote.setLangue("en"); - quote.setLikes(100); - quote.setIsValide(true); - quote.setReason("modifiée"); - - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - HttpEntity request = new HttpEntity<>(quote, headers); - - ResponseEntity response = restTemplate.exchange( - getUrl(""), HttpMethod.PUT, request, EntityModel.class); - - assertEquals(HttpStatus.OK, response.getStatusCode()); - } - @Test void testDeleteQuote() { Quote quote = new Quote(); @@ -173,24 +124,6 @@ class QuoteControllerTest { assertEquals(HttpStatus.OK, response.getStatusCode()); } - @Test - void testGetDailyQuote() { - Quote quote = new Quote(); - quote.setContent("Jour"); - quote.setLangue("fr"); - quote.setLikes(3); - quote.setIsValide(true); - quote.setReason("OK"); - quote.setCaracter(caracter); - quote.setSource(source); - quote.setUserVerif(user); - quoteRepository.save(quote); - - ResponseEntity response = restTemplate.getForEntity( - getUrl("/dailyquote?year=2023&month=12&day=1&lang=fr"), EntityModel.class); - assertEquals(HttpStatus.OK, response.getStatusCode()); - } - @Test void testGetDailyQuoteNotFound() { ResponseEntity response = restTemplate.getForEntity( diff --git a/src/test/java/com/example/wfwebapi/controller/RecordQuizControllerTest.java b/src/test/java/com/example/wfwebapi/controller/RecordQuizControllerTest.java new file mode 100644 index 0000000..119d52e --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/RecordQuizControllerTest.java @@ -0,0 +1,118 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.exception.ResourceNotFoundException; +import com.example.wfwebapi.model.RecordQuiz; +import com.example.wfwebapi.model.RecordQuizId; +import com.example.wfwebapi.repository.RecordQuizRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.dao.DataIntegrityViolationException; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +public class RecordQuizControllerTest { + + @Mock + private RecordQuizRepository recordQuizRepository; + + @InjectMocks + private RecordQuizController recordQuizController; + + private RecordQuizId recordQuizId; + private RecordQuiz recordQuiz; + + @BeforeEach + public void setUp() { + recordQuizId = new RecordQuizId(1L, 1L); + recordQuiz = new RecordQuiz(); + recordQuiz.setId(recordQuizId); + } + + @Test + public void testGetRecord_success() { + when(recordQuizRepository.findById(recordQuizId)).thenReturn(Optional.of(recordQuiz)); + + RecordQuiz result = recordQuizController.getRecord(1L, 1L); + + assertNotNull(result); + assertEquals(recordQuizId, result.getId()); + verify(recordQuizRepository, times(1)).findById(recordQuizId); + } + + @Test + public void testGetRecord_notFound() { + when(recordQuizRepository.findById(recordQuizId)).thenReturn(Optional.empty()); + + ResourceNotFoundException exception = assertThrows(ResourceNotFoundException.class, () -> { + recordQuizController.getRecord(1L, 1L); + }); + + assertEquals("RecordQuiz non trouvé", exception.getMessage()); + verify(recordQuizRepository, times(1)).findById(recordQuizId); + } + + @Test + public void testCreateRecord_success() { + when(recordQuizRepository.save(recordQuiz)).thenReturn(recordQuiz); + + RecordQuiz result = recordQuizController.createRecord(recordQuiz); + + assertNotNull(result); + assertEquals(recordQuizId, result.getId()); + verify(recordQuizRepository, times(1)).save(recordQuiz); + } + + @Test + public void testUpdateRecord_success() { + when(recordQuizRepository.existsById(recordQuizId)).thenReturn(true); + when(recordQuizRepository.save(recordQuiz)).thenReturn(recordQuiz); + + RecordQuiz result = recordQuizController.updateRecord(recordQuiz); + + assertNotNull(result); + assertEquals(recordQuizId, result.getId()); + verify(recordQuizRepository, times(1)).existsById(recordQuizId); + verify(recordQuizRepository, times(1)).save(recordQuiz); + } + + @Test + public void testUpdateRecord_notFound() { + when(recordQuizRepository.existsById(recordQuizId)).thenReturn(false); + + ResourceNotFoundException exception = assertThrows(ResourceNotFoundException.class, () -> { + recordQuizController.updateRecord(recordQuiz); + }); + + assertEquals("RecordQuiz non trouvé", exception.getMessage()); + verify(recordQuizRepository, times(1)).existsById(recordQuizId); + verify(recordQuizRepository, times(0)).save(recordQuiz); + } + + @Test + public void testDeleteRecord_success() { + when(recordQuizRepository.existsById(recordQuizId)).thenReturn(true); + + recordQuizController.deleteRecord(1L, 1L); + + verify(recordQuizRepository, times(1)).deleteById(recordQuizId); + } + + @Test + public void testDeleteRecord_notFound() { + when(recordQuizRepository.existsById(recordQuizId)).thenReturn(false); + + ResourceNotFoundException exception = assertThrows(ResourceNotFoundException.class, () -> { + recordQuizController.deleteRecord(1L, 1L); + }); + + assertEquals("RecordQuiz non trouvé", exception.getMessage()); + verify(recordQuizRepository, times(1)).existsById(recordQuizId); + verify(recordQuizRepository, times(0)).deleteById(recordQuizId); + } +}