diff --git a/.drone.yaml b/.drone.yml similarity index 100% rename from .drone.yaml rename to .drone.yml diff --git a/pom.xml b/pom.xml index d1cece5..0c421f1 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,37 @@ h2 runtime + + + org.junit.jupiter + junit-jupiter + 5.10.0 + test + + + + + org.mockito + mockito-core + 5.10.0 + test + + + + + org.mockito + mockito-junit-jupiter + 5.10.0 + test + + + + + org.springframework.boot + spring-boot-starter-test + test + + org.springframework.boot spring-boot-starter-hateoas @@ -78,6 +109,16 @@ false + + org.apache.maven.plugins + maven-surefire-plugin + 3.1.2 + + + **/*Test.java + + + org.springframework.boot spring-boot-maven-plugin diff --git a/src/main/java/com/example/wfwebapi/controller/FavoriteController.java b/src/main/java/com/example/wfwebapi/controller/FavoriteController.java index 3c938d8..a87a426 100644 --- a/src/main/java/com/example/wfwebapi/controller/FavoriteController.java +++ b/src/main/java/com/example/wfwebapi/controller/FavoriteController.java @@ -4,7 +4,11 @@ import java.util.List; import com.example.wfwebapi.exception.ResourceNotFoundException; import com.example.wfwebapi.model.Favorite; import com.example.wfwebapi.model.FavoriteId; +import com.example.wfwebapi.model.User; +import com.example.wfwebapi.model.Quote; import com.example.wfwebapi.repository.FavoriteRepository; +import com.example.wfwebapi.repository.UserRepository; +import com.example.wfwebapi.repository.QuoteRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -15,6 +19,12 @@ public class FavoriteController { @Autowired private FavoriteRepository favoriteRepository; + @Autowired + private UserRepository userRepository; + + @Autowired + private QuoteRepository quoteRepository; + @GetMapping("/{userId}") public List getFavoritesByUser(@PathVariable Long userId) { return favoriteRepository.findByUser_Id(userId); @@ -22,8 +32,15 @@ public class FavoriteController { @PostMapping public Favorite addFavorite(@RequestParam Long user, @RequestParam Long quote) { + User u = userRepository.findById(user) + .orElseThrow(() -> new ResourceNotFoundException("Utilisateur non trouvé : " + user)); + Quote q = quoteRepository.findById(quote) + .orElseThrow(() -> new ResourceNotFoundException("Citation non trouvée : " + quote)); + Favorite favorite = new Favorite(); favorite.setId(new FavoriteId(user, quote)); + favorite.setUser(u); + favorite.setQuote(q); return favoriteRepository.save(favorite); } diff --git a/src/main/java/com/example/wfwebapi/controller/QuizController.java b/src/main/java/com/example/wfwebapi/controller/QuizController.java index 504c6af..9287ad2 100644 --- a/src/main/java/com/example/wfwebapi/controller/QuizController.java +++ b/src/main/java/com/example/wfwebapi/controller/QuizController.java @@ -37,6 +37,7 @@ public class QuizController { .map(q -> { q.setTitle(updatedQuiz.getTitle()); q.setImage(updatedQuiz.getImage()); + q.setNbQuest(updatedQuiz.getNbQuest()); // ✅ champ maintenant mis à jour return quizRepository.save(q); }).orElseThrow(() -> new ResourceNotFoundException("Quiz non trouvé : " + updatedQuiz.getId())); } diff --git a/src/main/java/com/example/wfwebapi/controller/QuoteController.java b/src/main/java/com/example/wfwebapi/controller/QuoteController.java index c287f57..7b4c647 100644 --- a/src/main/java/com/example/wfwebapi/controller/QuoteController.java +++ b/src/main/java/com/example/wfwebapi/controller/QuoteController.java @@ -32,7 +32,8 @@ public class QuoteController { @GetMapping("/all") public CollectionModel> getAllQuotes(@RequestParam int index, @RequestParam int count) { List> quotes = quoteRepository.findAll(PageRequest.of(index, count)) - .stream().map(assembler::toModel) + .stream() + .map(assembler::toModel) .collect(Collectors.toList()); return CollectionModel.of(quotes); } @@ -40,7 +41,6 @@ public class QuoteController { @GetMapping("/dailyquote") public EntityModel getDailyQuote(@RequestParam int year, @RequestParam int month, @RequestParam int day, @RequestParam String lang) { - // Exemple : renvoi la première citation correspondant à la langue Quote quote = quoteRepository.findAll().stream() .filter(q -> q.getLangue().equalsIgnoreCase(lang)) .findFirst() @@ -50,8 +50,8 @@ public class QuoteController { @PostMapping public EntityModel createQuote(@RequestBody Quote newQuote) { - Quote quote = quoteRepository.save(newQuote); - return assembler.toModel(quote); + Quote saved = quoteRepository.save(newQuote); + return assembler.toModel(saved); } @PutMapping @@ -67,14 +67,16 @@ public class QuoteController { q.setSource(updatedQuote.getSource()); q.setUserVerif(updatedQuote.getUserVerif()); return quoteRepository.save(q); - }).orElseThrow(() -> new ResourceNotFoundException("Citation non trouvée : " + updatedQuote.getId())); + }) + .orElseThrow(() -> new ResourceNotFoundException("Citation non trouvée : " + updatedQuote.getId())); return assembler.toModel(quote); } @DeleteMapping("/delete") public void deleteQuote(@RequestParam Long idQuote) { - if (!quoteRepository.existsById(idQuote)) + if (!quoteRepository.existsById(idQuote)) { throw new ResourceNotFoundException("Citation non trouvée : " + idQuote); + } quoteRepository.deleteById(idQuote); } } diff --git a/src/test/java/com/example/wfwebapi/assembler/QuoteModelAssemblerTest.java b/src/test/java/com/example/wfwebapi/assembler/QuoteModelAssemblerTest.java new file mode 100644 index 0000000..1b4cb81 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/assembler/QuoteModelAssemblerTest.java @@ -0,0 +1,54 @@ +package com.example.wfwebapi.assembler; + +import com.example.wfwebapi.controller.QuoteController; +import com.example.wfwebapi.model.Quote; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.hateoas.EntityModel; + +import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; + +class QuoteModelAssemblerTest { + + private QuoteModelAssembler assembler; + private Quote quote; + private EntityModel model; + + @BeforeEach + void setUp() { + assembler = new QuoteModelAssembler(); + quote = new Quote(); + quote.setId(1L); + model = assembler.toModel(quote); + } + + @Test + void testModelContent() { + assertEquals(quote, model.getContent()); + } + + @Test + void testHasSelfLink() { + assertTrue(model.getLinks().hasLink("self")); + } + + @Test + void testHasQuotesLink() { + assertTrue(model.getLinks().hasLink("quotes")); + } + + @Test + void testSelfLinkHref() { + String expectedHref = linkTo(methodOn(QuoteController.class).getQuoteById(1L)).withSelfRel().getHref(); + String actualHref = model.getRequiredLink("self").getHref(); + assertEquals(expectedHref, actualHref); + } + + @Test + void testQuotesLinkHref() { + String expectedHref = linkTo(methodOn(QuoteController.class).getAllQuotes(0, 10)).withRel("quotes").getHref(); + String actualHref = model.getRequiredLink("quotes").getHref(); + assertEquals(expectedHref, actualHref); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/AdminControllerTest.java b/src/test/java/com/example/wfwebapi/controller/AdminControllerTest.java new file mode 100644 index 0000000..34139e6 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/AdminControllerTest.java @@ -0,0 +1,51 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.exception.ResourceNotFoundException; +import com.example.wfwebapi.model.Admin; +import com.example.wfwebapi.repository.AdminRepository; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class AdminControllerTest { + + @LocalServerPort + private int port; + + @Autowired + private AdminRepository adminRepository; + + private String baseUrl() { + return "http://localhost:" + port + "/api/v1/admin/"; + } + + @Test + void testGetAdminFound() { + Admin admin = new Admin(); + admin.setUserId(999L); + adminRepository.save(admin); + + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.getForEntity(baseUrl() + "999", Admin.class); + + assertEquals(200, response.getStatusCodeValue()); + assertEquals(999L, response.getBody().getUserId()); + } + + @Test + void testGetAdminNotFound() { + RestTemplate restTemplate = new RestTemplate(); + + Exception exception = assertThrows(Exception.class, () -> + restTemplate.getForEntity(baseUrl() + "123456", Admin.class) + ); + + assertTrue(exception.getMessage().contains("404")); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/AuthControllerTest.java b/src/test/java/com/example/wfwebapi/controller/AuthControllerTest.java new file mode 100644 index 0000000..269d9f0 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/AuthControllerTest.java @@ -0,0 +1,111 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.model.Image; +import com.example.wfwebapi.model.User; +import com.example.wfwebapi.repository.ImageRepository; +import com.example.wfwebapi.repository.UserRepository; +import com.example.wfwebapi.security.JwtTokenProvider; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.*; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class AuthControllerTest { + + @LocalServerPort + private int port; + + @Autowired + private AuthController authController; + + @Autowired + private UserRepository userRepository; + + @Autowired + private ImageRepository imageRepository; + + @Autowired + private JwtTokenProvider tokenProvider; + + @Autowired + private TestRestTemplate restTemplate; + + private String getUrl(String path) { + return "http://localhost:" + port + "/api/v1/auth" + path; + } + + @BeforeEach + void setup() { + userRepository.deleteAll(); + imageRepository.deleteAll(); + + Image image = new Image(); + image.setImgPath("fake/path.png"); + image = imageRepository.save(image); + + User user = new User(); + user.setUsername("john"); + user.setPassword("password123"); + user.setEmail("john@example.com"); + user.setCreation(java.time.LocalDate.now()); + user.setImage(image); + + userRepository.save(user); + } + + @Test + void contextLoads() { + assertNotNull(authController); + assertNotNull(userRepository); + assertNotNull(tokenProvider); + } + + @Test + void testLoginSuccess() { + AuthController.AuthRequest request = new AuthController.AuthRequest(); + request.setUsername("john"); + request.setPassword("password123"); + + ResponseEntity response = restTemplate.postForEntity( + getUrl("/login"), request, AuthController.AuthResponse.class + ); + + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertNotNull(response.getBody()); + assertNotNull(response.getBody().getToken()); + } + + @Test + void testLoginInvalidPassword() { + AuthController.AuthRequest request = new AuthController.AuthRequest(); + request.setUsername("john"); + request.setPassword("wrongpass"); + + ResponseEntity response = restTemplate.postForEntity( + getUrl("/login"), request, String.class + ); + + assertEquals(HttpStatus.UNAUTHORIZED, response.getStatusCode()); + assertEquals("Mot de passe invalide", response.getBody()); + } + + @Test + void testLoginUserNotFound() { + AuthController.AuthRequest request = new AuthController.AuthRequest(); + request.setUsername("unknown"); + request.setPassword("any"); + + ResponseEntity response = restTemplate.postForEntity( + getUrl("/login"), request, String.class + ); + + assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode()); + assertTrue(response.getBody().contains("Utilisateur non trouvé")); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/CaracterControllerTest.java b/src/test/java/com/example/wfwebapi/controller/CaracterControllerTest.java new file mode 100644 index 0000000..165965b --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/CaracterControllerTest.java @@ -0,0 +1,118 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.model.Caracter; +import com.example.wfwebapi.model.Image; +import com.example.wfwebapi.repository.CaracterRepository; +import com.example.wfwebapi.repository.ImageRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.*; + +import java.util.Objects; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class CaracterControllerTest { + + @LocalServerPort + private int port; + + @Autowired + private TestRestTemplate restTemplate; + + @Autowired + private CaracterRepository caracterRepository; + + @Autowired + private ImageRepository imageRepository; + + private Image image; + + private String getUrl(String path) { + return "http://localhost:" + port + "/api/v1/caracter" + path; + } + + @BeforeEach + void setup() { + caracterRepository.deleteAll(); + imageRepository.deleteAll(); + + image = new Image(); + image.setImgPath("path/to/image.png"); + imageRepository.save(image); + } + + @Test + void testCreateAndGetCaracterById() { + Caracter caracter = new Caracter(); + caracter.setCaracter("Déterminé"); + caracter.setImage(image); + + ResponseEntity postResponse = restTemplate.postForEntity(getUrl(""), caracter, Caracter.class); + assertEquals(HttpStatus.OK, postResponse.getStatusCode()); + Long id = Objects.requireNonNull(postResponse.getBody()).getId(); + + ResponseEntity getResponse = restTemplate.getForEntity(getUrl("/" + id), Caracter.class); + assertEquals(HttpStatus.OK, getResponse.getStatusCode()); + assertEquals("Déterminé", getResponse.getBody().getCaracter()); + } + + @Test + void testGetAllCaracters() { + Caracter c = new Caracter(); + c.setCaracter("Créatif"); + c.setImage(image); + caracterRepository.save(c); + + ResponseEntity response = restTemplate.getForEntity(getUrl("/"), Caracter[].class); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertTrue(response.getBody().length >= 1); + } + + @Test + void testUpdateCaracter() { + Caracter c = new Caracter(); + c.setCaracter("Patient"); + c.setImage(image); + c = caracterRepository.save(c); + + c.setCaracter("Impulsif"); + + HttpEntity request = new HttpEntity<>(c); + ResponseEntity response = restTemplate.exchange(getUrl(""), HttpMethod.PUT, request, Caracter.class); + + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertEquals("Impulsif", response.getBody().getCaracter()); + } + + @Test + void testDeleteCaracter() { + Caracter c = new Caracter(); + c.setCaracter("Sérieux"); + c.setImage(image); + c = caracterRepository.save(c); + + ResponseEntity response = restTemplate.exchange(getUrl("?id=" + c.getId()), HttpMethod.DELETE, null, Void.class); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertFalse(caracterRepository.existsById(c.getId())); + } + + @Test + void testGetCaracterNotFound() { + ResponseEntity response = restTemplate.getForEntity(getUrl("/999999"), String.class); + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Caracter non trouvé")); + } + + @Test + void testDeleteCaracterNotFound() { + ResponseEntity response = restTemplate.exchange(getUrl("?id=999999"), HttpMethod.DELETE, null, String.class); + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Caracter non trouvé")); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/CommentaryControllerTest.java b/src/test/java/com/example/wfwebapi/controller/CommentaryControllerTest.java new file mode 100644 index 0000000..2563550 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/CommentaryControllerTest.java @@ -0,0 +1,138 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.model.*; +import com.example.wfwebapi.repository.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.*; + +import java.time.LocalDate; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class CommentaryControllerTest { + + @LocalServerPort + private int port; + + @Autowired private TestRestTemplate restTemplate; + + @Autowired private CommentaryRepository commentaryRepository; + @Autowired private QuoteRepository quoteRepository; + @Autowired private UserRepository userRepository; + @Autowired private ImageRepository imageRepository; + @Autowired private CaracterRepository caracterRepository; + @Autowired private SourceRepository sourceRepository; + + private Quote quote; + private User user; + + private String getUrl(String path) { + return "http://localhost:" + port + "/api/v1/commentary" + path; + } + + @BeforeEach + void setup() { + clearDatabase(); + + Image image = new Image(); + image.setImgPath("test.png"); + imageRepository.save(image); + + user = new User(); + user.setUsername("user"); + user.setEmail("user@mail.com"); + user.setPassword("pass"); + user.setCreation(LocalDate.now()); + user.setImage(image); + userRepository.save(user); + + Caracter caracter = new Caracter(); + caracter.setCaracter("Fort"); + caracter.setImage(image); + caracterRepository.save(caracter); + + Source source = new Source(); + source.setTitle("source"); + source.setDateS(2000); + sourceRepository.save(source); + + quote = new Quote(); + quote.setContent("Ceci est une citation."); + quote.setLangue("fr"); + quote.setIsValide(true); + quote.setLikes(0); + quote.setReason("valid"); + quote.setCaracter(caracter); + quote.setSource(source); + quote.setUserVerif(user); + quoteRepository.save(quote); + } + + void clearDatabase() { + commentaryRepository.deleteAll(); + quoteRepository.deleteAll(); + caracterRepository.deleteAll(); + sourceRepository.deleteAll(); + userRepository.deleteAll(); + imageRepository.deleteAll(); + } + + @Test + void testAddAndGetCommentary() { + Commentary commentary = new Commentary(); + commentary.setUser(user); + commentary.setComment("Super citation !"); + commentary.setDateC(LocalDate.now()); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity request = new HttpEntity<>(commentary, headers); + + ResponseEntity postResponse = restTemplate.postForEntity( + getUrl("?quote=" + quote.getId()), request, Commentary.class); + + assertEquals(HttpStatus.OK, postResponse.getStatusCode()); + assertNotNull(postResponse.getBody().getId()); + + ResponseEntity getResponse = restTemplate.getForEntity( + getUrl("/" + quote.getId()), Commentary[].class); + + assertEquals(HttpStatus.OK, getResponse.getStatusCode()); + assertEquals(1, getResponse.getBody().length); + } + + @Test + void testDeleteCommentary() { + Commentary commentary = new Commentary(); + commentary.setUser(user); + commentary.setQuote(quote); + commentary.setComment("À supprimer"); + commentary.setDateC(LocalDate.now()); + commentaryRepository.save(commentary); + + ResponseEntity deleteResponse = restTemplate.exchange( + getUrl("?id=" + quote.getId()), HttpMethod.DELETE, null, Void.class); + + assertEquals(HttpStatus.OK, deleteResponse.getStatusCode()); + + List remaining = commentaryRepository.findByQuote_Id(quote.getId()); + assertTrue(remaining.isEmpty()); + } + + @Test + void testDeleteCommentaryNotFound() { + ResponseEntity response = restTemplate.exchange( + getUrl("?id=99999"), HttpMethod.DELETE, null, String.class); + + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Aucun commentaire trouvé")); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/DailyQuoteControllerTest.java b/src/test/java/com/example/wfwebapi/controller/DailyQuoteControllerTest.java new file mode 100644 index 0000000..ee036f2 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/DailyQuoteControllerTest.java @@ -0,0 +1,103 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.model.*; +import com.example.wfwebapi.repository.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.*; + +import java.time.LocalDate; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class DailyQuoteControllerTest { + + @LocalServerPort + private int port; + + @Autowired private TestRestTemplate restTemplate; + + @Autowired private DailyQuoteRepository dailyQuoteRepository; + @Autowired private QuoteRepository quoteRepository; + @Autowired private UserRepository userRepository; + @Autowired private ImageRepository imageRepository; + @Autowired private CaracterRepository caracterRepository; + @Autowired private SourceRepository sourceRepository; + + private Quote quote; + + private String getUrl() { + return "http://localhost:" + port + "/api/v1/dailyquote"; + } + + @BeforeEach + void setup() { + dailyQuoteRepository.deleteAll(); + quoteRepository.deleteAll(); + caracterRepository.deleteAll(); + sourceRepository.deleteAll(); + userRepository.deleteAll(); + imageRepository.deleteAll(); + + Image image = new Image(); + image.setImgPath("daily.png"); + imageRepository.save(image); + + User user = new User(); + user.setUsername("dailyUser"); + user.setPassword("pwd"); + user.setEmail("daily@mail.com"); + user.setCreation(LocalDate.now()); + user.setImage(image); + userRepository.save(user); + + Caracter caracter = new Caracter(); + caracter.setCaracter("Calme"); + caracter.setImage(image); + caracterRepository.save(caracter); + + Source source = new Source(); + source.setTitle("Livre A"); + source.setDateS(2001); + sourceRepository.save(source); + + quote = new Quote(); + quote.setContent("Chaque jour est un cadeau."); + quote.setLangue("fr"); + quote.setIsValide(true); + quote.setLikes(10); + quote.setReason("approuvée"); + quote.setUserVerif(user); + quote.setCaracter(caracter); + quote.setSource(source); + quoteRepository.save(quote); + + DailyQuote dailyQuote = new DailyQuote(); + dailyQuote.setCitationId(quote.getId()); // CORRECT : ne pas faire setQuote() + dailyQuoteRepository.save(dailyQuote); + } + + @Test + void testGetDailyQuote() { + ResponseEntity response = restTemplate.getForEntity(getUrl(), DailyQuote.class); + + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertNotNull(response.getBody()); + assertEquals(quote.getId(), response.getBody().getCitationId()); + } + + @Test + void testGetDailyQuoteNotFound() { + dailyQuoteRepository.deleteAll(); + + ResponseEntity response = restTemplate.getForEntity(getUrl(), String.class); + + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Aucune DailyQuote définie")); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/FavoriteControllerTest.java b/src/test/java/com/example/wfwebapi/controller/FavoriteControllerTest.java new file mode 100644 index 0000000..293c269 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/FavoriteControllerTest.java @@ -0,0 +1,133 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.model.*; +import com.example.wfwebapi.repository.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.*; + +import java.time.LocalDate; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class FavoriteControllerTest { + + @LocalServerPort + private int port; + + @Autowired private TestRestTemplate restTemplate; + + @Autowired private FavoriteRepository favoriteRepository; + @Autowired private QuoteRepository quoteRepository; + @Autowired private UserRepository userRepository; + @Autowired private ImageRepository imageRepository; + @Autowired private CaracterRepository caracterRepository; + @Autowired private SourceRepository sourceRepository; + + private User user; + private Quote quote; + + private String getUrl(String path) { + return "http://localhost:" + port + "/api/v1/favorite" + path; + } + + @BeforeEach + void setup() { + favoriteRepository.deleteAll(); + quoteRepository.deleteAll(); + caracterRepository.deleteAll(); + sourceRepository.deleteAll(); + userRepository.deleteAll(); + imageRepository.deleteAll(); + + Image image = new Image(); + image.setImgPath("fav.png"); + imageRepository.save(image); + + user = new User(); + user.setUsername("testuser"); + user.setPassword("secret"); + user.setEmail("test@ex.com"); + user.setCreation(LocalDate.now()); + user.setImage(image); + userRepository.save(user); + + Caracter caracter = new Caracter(); + caracter.setCaracter("Sérieux"); + caracter.setImage(image); + caracterRepository.save(caracter); + + Source source = new Source(); + source.setTitle("Source X"); + source.setDateS(1999); + sourceRepository.save(source); + + quote = new Quote(); + quote.setContent("La connaissance est le pouvoir."); + quote.setLangue("fr"); + quote.setIsValide(true); + quote.setLikes(100); + quote.setReason("Validée"); + quote.setCaracter(caracter); + quote.setSource(source); + quote.setUserVerif(user); + quoteRepository.save(quote); + } + + @Test + void testAddAndGetFavorite() { + ResponseEntity postResponse = restTemplate.postForEntity( + getUrl("?user=" + user.getId() + ""e=" + quote.getId()), + null, + Void.class + ); + + assertEquals(HttpStatus.OK, postResponse.getStatusCode()); + + ResponseEntity getResponse = restTemplate.getForEntity( + getUrl("/" + user.getId()), + Favorite[].class + ); + + assertEquals(HttpStatus.OK, getResponse.getStatusCode()); + assertEquals(1, getResponse.getBody().length); + assertEquals(quote.getId(), getResponse.getBody()[0].getQuote().getId()); + } + + @Test + void testDeleteFavorite() { + Favorite favorite = new Favorite(); + favorite.setId(new FavoriteId(user.getId(), quote.getId())); + favorite.setUser(user); + favorite.setQuote(quote); + favoriteRepository.save(favorite); + + ResponseEntity response = restTemplate.exchange( + getUrl("?user=" + user.getId() + ""e=" + quote.getId()), + HttpMethod.DELETE, + null, + Void.class + ); + + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertFalse(favoriteRepository.existsById(new FavoriteId(user.getId(), quote.getId()))); + } + + @Test + void testDeleteFavoriteNotFound() { + ResponseEntity response = restTemplate.exchange( + getUrl("?user=9999"e=9999"), + HttpMethod.DELETE, + null, + String.class + ); + + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Favorite non trouvée")); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/ImageControllerTest.java b/src/test/java/com/example/wfwebapi/controller/ImageControllerTest.java new file mode 100644 index 0000000..18f6d81 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/ImageControllerTest.java @@ -0,0 +1,102 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.model.Image; +import com.example.wfwebapi.repository.ImageRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.*; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class ImageControllerTest { + + @LocalServerPort + private int port; + + @Autowired private TestRestTemplate restTemplate; + @Autowired private ImageRepository imageRepository; + + private String getUrl(String path) { + return "http://localhost:" + port + "/api/v1/image" + path; + } + + @BeforeEach + void setup() { + imageRepository.deleteAll(); + } + + @Test + void testCreateAndGetImage() { + Image image = new Image(); + image.setImgPath("assets/img/test.png"); + + ResponseEntity postResponse = restTemplate.postForEntity( + getUrl(""), image, Image.class); + + assertEquals(HttpStatus.OK, postResponse.getStatusCode()); + Image created = postResponse.getBody(); + assertNotNull(created); + assertNotNull(created.getId()); + + ResponseEntity getResponse = restTemplate.getForEntity( + getUrl("/" + created.getId()), Image.class); + + assertEquals(HttpStatus.OK, getResponse.getStatusCode()); + assertEquals("assets/img/test.png", getResponse.getBody().getImgPath()); + } + + @Test + void testUpdateImage() { + Image image = new Image(); + image.setImgPath("original.png"); + image = imageRepository.save(image); + + image.setImgPath("updated.png"); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity entity = new HttpEntity<>(image, headers); + + ResponseEntity putResponse = restTemplate.exchange( + getUrl(""), HttpMethod.PUT, entity, Image.class); + + assertEquals(HttpStatus.OK, putResponse.getStatusCode()); + assertEquals("updated.png", putResponse.getBody().getImgPath()); + } + + @Test + void testDeleteImage() { + Image image = new Image(); + image.setImgPath("todelete.png"); + image = imageRepository.save(image); + + ResponseEntity deleteResponse = restTemplate.exchange( + getUrl("?id=" + image.getId()), HttpMethod.DELETE, null, Void.class); + + assertEquals(HttpStatus.OK, deleteResponse.getStatusCode()); + assertFalse(imageRepository.existsById(image.getId())); + } + + @Test + void testGetImageNotFound() { + ResponseEntity response = restTemplate.getForEntity( + getUrl("/9999"), String.class); + + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Image non trouvée")); + } + + @Test + void testDeleteImageNotFound() { + ResponseEntity response = restTemplate.exchange( + getUrl("?id=9999"), HttpMethod.DELETE, null, String.class); + + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Image non trouvée")); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/QuestionControllerTest.java b/src/test/java/com/example/wfwebapi/controller/QuestionControllerTest.java new file mode 100644 index 0000000..373bc0d --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/QuestionControllerTest.java @@ -0,0 +1,112 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.model.Question; +import com.example.wfwebapi.repository.QuestionRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.*; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class QuestionControllerTest { + + @LocalServerPort + private int port; + + @Autowired private TestRestTemplate restTemplate; + @Autowired private QuestionRepository questionRepository; + + private String getUrl(String path) { + return "http://localhost:" + port + "/api/v1/question" + path; + } + + @BeforeEach + void setup() { + questionRepository.deleteAll(); + } + + @Test + void testCreateAndGetQuestion() { + Question question = new Question(); + question.setTexte("Quel est le langage de ce test ?"); + question.setAnswerA("Python"); + question.setAnswerB("Java"); + question.setAnswerC("C++"); + question.setAnswerD("JavaScript"); + question.setCAnswer("Java"); + + ResponseEntity postResponse = restTemplate.postForEntity(getUrl(""), question, Question.class); + assertEquals(HttpStatus.OK, postResponse.getStatusCode()); + assertNotNull(postResponse.getBody()); + Long id = postResponse.getBody().getId(); + assertNotNull(id); + + ResponseEntity getResponse = restTemplate.getForEntity(getUrl("/" + id), Question.class); + assertEquals(HttpStatus.OK, getResponse.getStatusCode()); + assertEquals("Java", getResponse.getBody().getCAnswer()); + } + + @Test + void testUpdateQuestion() { + Question q = new Question(); + q.setTexte("Old Q"); + q.setAnswerA("A"); + q.setAnswerB("B"); + q.setAnswerC("C"); + q.setAnswerD("D"); + q.setCAnswer("B"); + q = questionRepository.save(q); + + q.setTexte("Updated Q"); + q.setCAnswer("A"); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity entity = new HttpEntity<>(q, headers); + + ResponseEntity response = restTemplate.exchange( + getUrl(""), HttpMethod.PUT, entity, Question.class); + + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertEquals("Updated Q", response.getBody().getTexte()); + assertEquals("A", response.getBody().getCAnswer()); + } + + @Test + void testDeleteQuestion() { + Question q = new Question(); + q.setTexte("À supprimer"); + q.setAnswerA("1"); + q.setAnswerB("2"); + q.setAnswerC("3"); + q.setAnswerD("4"); + q.setCAnswer("2"); + q = questionRepository.save(q); + + ResponseEntity delete = restTemplate.exchange( + getUrl("?id=" + q.getId()), HttpMethod.DELETE, null, Void.class); + + assertEquals(HttpStatus.OK, delete.getStatusCode()); + assertFalse(questionRepository.existsById(q.getId())); + } + + @Test + void testGetQuestionNotFound() { + ResponseEntity response = restTemplate.getForEntity(getUrl("/9999"), String.class); + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Question non trouvée")); + } + + @Test + void testDeleteQuestionNotFound() { + ResponseEntity response = restTemplate.exchange( + getUrl("?id=9999"), HttpMethod.DELETE, null, String.class); + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Question non trouvée")); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/QuizControllerTest.java b/src/test/java/com/example/wfwebapi/controller/QuizControllerTest.java new file mode 100644 index 0000000..d44c038 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/QuizControllerTest.java @@ -0,0 +1,130 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.model.Image; +import com.example.wfwebapi.model.Quiz; +import com.example.wfwebapi.repository.ImageRepository; +import com.example.wfwebapi.repository.QuizRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.*; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class QuizControllerTest { + + @LocalServerPort + private int port; + + @Autowired private TestRestTemplate restTemplate; + @Autowired private QuizRepository quizRepository; + @Autowired private ImageRepository imageRepository; + + private String getUrl(String path) { + return "http://localhost:" + port + "/api/v1/quiz" + path; + } + + private Image image; + + @BeforeEach + void setup() { + quizRepository.deleteAll(); + imageRepository.deleteAll(); + + image = new Image(); + image.setImgPath("quiz/image.png"); + imageRepository.save(image); + } + + @Test + void testCreateAndGetQuiz() { + Quiz quiz = new Quiz(); + quiz.setTitle("Histoire"); + quiz.setImage(image); + quiz.setNbQuest(5); + + ResponseEntity postResponse = restTemplate.postForEntity(getUrl(""), quiz, Quiz.class); + assertEquals(HttpStatus.OK, postResponse.getStatusCode()); + Quiz created = postResponse.getBody(); + assertNotNull(created); + assertNotNull(created.getId()); + + ResponseEntity getResponse = restTemplate.getForEntity(getUrl("/" + created.getId()), Quiz.class); + assertEquals(HttpStatus.OK, getResponse.getStatusCode()); + assertEquals("Histoire", getResponse.getBody().getTitle()); + } + + @Test + void testUpdateQuiz() { + Quiz quiz = new Quiz(); + quiz.setTitle("Sciences"); + quiz.setImage(image); + quiz.setNbQuest(10); + quiz = quizRepository.save(quiz); + + quiz.setTitle("Sciences - Maj"); + quiz.setNbQuest(12); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity entity = new HttpEntity<>(quiz, headers); + + ResponseEntity putResponse = restTemplate.exchange(getUrl(""), HttpMethod.PUT, entity, Quiz.class); + assertEquals(HttpStatus.OK, putResponse.getStatusCode()); + assertEquals("Sciences - Maj", putResponse.getBody().getTitle()); + assertEquals(12, putResponse.getBody().getNbQuest()); + } + + @Test + void testDeleteQuiz() { + Quiz quiz = new Quiz(); + quiz.setTitle("À supprimer"); + quiz.setImage(image); + quiz.setNbQuest(3); + quiz = quizRepository.save(quiz); + + ResponseEntity deleteResponse = restTemplate.exchange( + getUrl("?id=" + quiz.getId()), HttpMethod.DELETE, null, Void.class); + assertEquals(HttpStatus.OK, deleteResponse.getStatusCode()); + assertFalse(quizRepository.existsById(quiz.getId())); + } + + @Test + void testGetQuizNotFound() { + ResponseEntity response = restTemplate.getForEntity(getUrl("/9999"), String.class); + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Quiz non trouvé")); + } + + @Test + void testDeleteQuizNotFound() { + ResponseEntity response = restTemplate.exchange( + getUrl("?id=9999"), HttpMethod.DELETE, null, String.class); + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Quiz non trouvé")); + } + + @Test + void testGetAllQuizzes() { + Quiz q1 = new Quiz(); + q1.setTitle("Test 1"); + q1.setImage(image); + q1.setNbQuest(5); + + Quiz q2 = new Quiz(); + q2.setTitle("Test 2"); + q2.setImage(image); + q2.setNbQuest(10); + + quizRepository.save(q1); + quizRepository.save(q2); + + ResponseEntity response = restTemplate.getForEntity(getUrl(""), Quiz[].class); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertEquals(2, response.getBody().length); + } +} diff --git a/src/test/java/com/example/wfwebapi/controller/QuoteControllerTest.java b/src/test/java/com/example/wfwebapi/controller/QuoteControllerTest.java new file mode 100644 index 0000000..331a6cf --- /dev/null +++ b/src/test/java/com/example/wfwebapi/controller/QuoteControllerTest.java @@ -0,0 +1,201 @@ +package com.example.wfwebapi.controller; + +import com.example.wfwebapi.model.*; +import com.example.wfwebapi.repository.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.hateoas.EntityModel; +import org.springframework.http.*; + +import java.util.LinkedHashMap; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class QuoteControllerTest { + + @LocalServerPort + private int port; + + @Autowired private TestRestTemplate restTemplate; + @Autowired private QuoteRepository quoteRepository; + @Autowired private UserRepository userRepository; + @Autowired private SourceRepository sourceRepository; + @Autowired private CaracterRepository caracterRepository; + + private User user; + private Source source; + private Caracter caracter; + + private String getUrl(String path) { + return "http://localhost:" + port + "/api/v1/quote" + path; + } + + @BeforeEach + void setup() { + quoteRepository.deleteAll(); + userRepository.deleteAll(); + sourceRepository.deleteAll(); + caracterRepository.deleteAll(); + + Image img = new Image(); + img.setImgPath("img.png"); + + caracter = new Caracter(); + caracter.setCaracter("Test Character"); + caracter.setImage(img); + caracter = caracterRepository.save(caracter); + + source = new Source(); + source.setTitle("Test Source"); + source.setDateS(2020); + source = sourceRepository.save(source); + + user = new User(); + user.setUsername("verif"); + user.setEmail("v@v.fr"); + user.setPassword("pass"); + user.setImage(img); + user.setCreation(java.time.LocalDate.now()); + 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(); + quote.setContent("À supprimer"); + quote.setLangue("fr"); + quote.setLikes(0); + quote.setIsValide(false); + quote.setReason("test"); + quote.setCaracter(caracter); + quote.setSource(source); + quote.setUserVerif(user); + quote = quoteRepository.save(quote); + + ResponseEntity response = restTemplate.exchange( + getUrl("/delete?idQuote=" + quote.getId()), HttpMethod.DELETE, null, Void.class); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertFalse(quoteRepository.existsById(quote.getId())); + } + + @Test + void testGetQuoteNotFound() { + ResponseEntity response = restTemplate.getForEntity( + getUrl("/9999"), String.class); + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Citation non trouvée")); + } + + @Test + void testGetAllQuotes() { + Quote quote1 = new Quote(); + quote1.setContent("Q1"); + quote1.setLangue("fr"); + quote1.setLikes(5); + quote1.setIsValide(true); + quote1.setReason("ok"); + quote1.setCaracter(caracter); + quote1.setSource(source); + quote1.setUserVerif(user); + + Quote quote2 = new Quote(); + quote2.setContent("Q2"); + quote2.setLangue("en"); + quote2.setLikes(10); + quote2.setIsValide(true); + quote2.setReason("ok"); + quote2.setCaracter(caracter); + quote2.setSource(source); + quote2.setUserVerif(user); + + quoteRepository.save(quote1); + quoteRepository.save(quote2); + + ResponseEntity response = restTemplate.getForEntity( + getUrl("/all?index=0&count=10"), String.class); + 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( + getUrl("/dailyquote?year=2023&month=12&day=1&lang=zz"), String.class); + assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); + assertTrue(response.getBody().contains("Aucune citation trouvée")); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/AdminTest.java b/src/test/java/com/example/wfwebapi/model/AdminTest.java new file mode 100644 index 0000000..cdfcd99 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/AdminTest.java @@ -0,0 +1,20 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class AdminTest { + + @Test + void testGettersAndSetters() { + Admin admin = new Admin(); + User user = new User(); + + admin.setUserId(123L); + admin.setUser(user); + + assertEquals(123L, admin.getUserId()); + assertEquals(user, admin.getUser()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/CaracterTest.java b/src/test/java/com/example/wfwebapi/model/CaracterTest.java new file mode 100644 index 0000000..dd26511 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/CaracterTest.java @@ -0,0 +1,22 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class CaracterTest { + + @Test + void testGettersAndSetters() { + Caracter caracter = new Caracter(); + Image image = new Image(); + + caracter.setId(1L); + caracter.setCaracter("Guerrier"); + caracter.setImage(image); + + assertEquals(1L, caracter.getId()); + assertEquals("Guerrier", caracter.getCaracter()); + assertEquals(image, caracter.getImage()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/CommentaryTest.java b/src/test/java/com/example/wfwebapi/model/CommentaryTest.java new file mode 100644 index 0000000..2dc61d2 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/CommentaryTest.java @@ -0,0 +1,31 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; + +import static org.junit.jupiter.api.Assertions.*; + +class CommentaryTest { + + @Test + void testGettersAndSetters() { + Commentary commentary = new Commentary(); + Quote quote = new Quote(); + User user = new User(); + LocalDate date = LocalDate.of(2024, 4, 5); + String text = "Ceci est un commentaire"; + + commentary.setId(1L); + commentary.setQuote(quote); + commentary.setUser(user); + commentary.setDateC(date); + commentary.setComment(text); + + assertEquals(1L, commentary.getId()); + assertEquals(quote, commentary.getQuote()); + assertEquals(user, commentary.getUser()); + assertEquals(date, commentary.getDateC()); + assertEquals(text, commentary.getComment()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/DailyQuoteTest.java b/src/test/java/com/example/wfwebapi/model/DailyQuoteTest.java new file mode 100644 index 0000000..b74dbd1 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/DailyQuoteTest.java @@ -0,0 +1,20 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class DailyQuoteTest { + + @Test + void testGettersAndSetters() { + DailyQuote dailyQuote = new DailyQuote(); + Quote quote = new Quote(); + + dailyQuote.setCitationId(1L); + dailyQuote.setQuote(quote); + + assertEquals(1L, dailyQuote.getCitationId()); + assertEquals(quote, dailyQuote.getQuote()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/FavoriteIdTest.java b/src/test/java/com/example/wfwebapi/model/FavoriteIdTest.java new file mode 100644 index 0000000..5b3b46b --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/FavoriteIdTest.java @@ -0,0 +1,37 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class FavoriteIdTest { + + @Test + void testGettersAndSetters() { + FavoriteId id = new FavoriteId(); + id.setUser(1L); + id.setQuote(2L); + + assertEquals(1L, id.getUser()); + assertEquals(2L, id.getQuote()); + } + + @Test + void testConstructor() { + FavoriteId id = new FavoriteId(3L, 4L); + + assertEquals(3L, id.getUser()); + assertEquals(4L, id.getQuote()); + } + + @Test + void testEqualsAndHashCode() { + FavoriteId id1 = new FavoriteId(1L, 2L); + FavoriteId id2 = new FavoriteId(1L, 2L); + FavoriteId id3 = new FavoriteId(2L, 1L); + + assertEquals(id1, id2); + assertEquals(id1.hashCode(), id2.hashCode()); + assertNotEquals(id1, id3); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/FavoriteTest.java b/src/test/java/com/example/wfwebapi/model/FavoriteTest.java new file mode 100644 index 0000000..1d46544 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/FavoriteTest.java @@ -0,0 +1,24 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class FavoriteTest { + + @Test + void testGettersAndSetters() { + Favorite favorite = new Favorite(); + FavoriteId favoriteId = new FavoriteId(); + User user = new User(); + Quote quote = new Quote(); + + favorite.setId(favoriteId); + favorite.setUser(user); + favorite.setQuote(quote); + + assertEquals(favoriteId, favorite.getId()); + assertEquals(user, favorite.getUser()); + assertEquals(quote, favorite.getQuote()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/ImageTest.java b/src/test/java/com/example/wfwebapi/model/ImageTest.java new file mode 100644 index 0000000..54a186f --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/ImageTest.java @@ -0,0 +1,18 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ImageTest { + + @Test + void testGettersAndSetters() { + Image image = new Image(); + image.setId(1L); + image.setImgPath("/images/avatar.png"); + + assertEquals(1L, image.getId()); + assertEquals("/images/avatar.png", image.getImgPath()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/QuestionTest.java b/src/test/java/com/example/wfwebapi/model/QuestionTest.java new file mode 100644 index 0000000..c4dcca9 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/QuestionTest.java @@ -0,0 +1,29 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class QuestionTest { + + @Test + void testGettersAndSetters() { + Question question = new Question(); + + question.setId(1L); + question.setTexte("Quelle est la capitale de la France ?"); + question.setAnswerA("Paris"); + question.setAnswerB("Lyon"); + question.setAnswerC("Marseille"); + question.setAnswerD("Nice"); + question.setCAnswer("Paris"); + + assertEquals(1L, question.getId()); + assertEquals("Quelle est la capitale de la France ?", question.getTexte()); + assertEquals("Paris", question.getAnswerA()); + assertEquals("Lyon", question.getAnswerB()); + assertEquals("Marseille", question.getAnswerC()); + assertEquals("Nice", question.getAnswerD()); + assertEquals("Paris", question.getCAnswer()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/QuizQuestionIdTest.java b/src/test/java/com/example/wfwebapi/model/QuizQuestionIdTest.java new file mode 100644 index 0000000..fb7c5c8 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/QuizQuestionIdTest.java @@ -0,0 +1,37 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class QuizQuestionIdTest { + + @Test + void testGettersAndSetters() { + QuizQuestionId id = new QuizQuestionId(); + id.setQuiz(1L); + id.setQuestion(2L); + + assertEquals(1L, id.getQuiz()); + assertEquals(2L, id.getQuestion()); + } + + @Test + void testConstructor() { + QuizQuestionId id = new QuizQuestionId(3L, 4L); + + assertEquals(3L, id.getQuiz()); + assertEquals(4L, id.getQuestion()); + } + + @Test + void testEqualsAndHashCode() { + QuizQuestionId id1 = new QuizQuestionId(1L, 2L); + QuizQuestionId id2 = new QuizQuestionId(1L, 2L); + QuizQuestionId id3 = new QuizQuestionId(2L, 1L); + + assertEquals(id1, id2); + assertEquals(id1.hashCode(), id2.hashCode()); + assertNotEquals(id1, id3); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/QuizQuestionTest.java b/src/test/java/com/example/wfwebapi/model/QuizQuestionTest.java new file mode 100644 index 0000000..3ed75bb --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/QuizQuestionTest.java @@ -0,0 +1,24 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class QuizQuestionTest { + + @Test + void testGettersAndSetters() { + QuizQuestion quizQuestion = new QuizQuestion(); + QuizQuestionId id = new QuizQuestionId(); + Quiz quiz = new Quiz(); + Question question = new Question(); + + quizQuestion.setId(id); + quizQuestion.setQuiz(quiz); + quizQuestion.setQuestion(question); + + assertEquals(id, quizQuestion.getId()); + assertEquals(quiz, quizQuestion.getQuiz()); + assertEquals(question, quizQuestion.getQuestion()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/QuizTest.java b/src/test/java/com/example/wfwebapi/model/QuizTest.java new file mode 100644 index 0000000..324692d --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/QuizTest.java @@ -0,0 +1,24 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class QuizTest { + + @Test + void testGettersAndSetters() { + Quiz quiz = new Quiz(); + Image image = new Image(); + + quiz.setId(1L); + quiz.setTitle("Histoire de France"); + quiz.setImage(image); + quiz.setNbQuest(10); + + assertEquals(1L, quiz.getId()); + assertEquals("Histoire de France", quiz.getTitle()); + assertEquals(image, quiz.getImage()); + assertEquals(10, quiz.getNbQuest()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/QuoteTest.java b/src/test/java/com/example/wfwebapi/model/QuoteTest.java new file mode 100644 index 0000000..fbe7187 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/QuoteTest.java @@ -0,0 +1,36 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class QuoteTest { + + @Test + void testGettersAndSetters() { + Quote quote = new Quote(); + Caracter caracter = new Caracter(); + Source source = new Source(); + User user = new User(); + + quote.setId(1L); + quote.setContent("Ceci est une citation."); + quote.setLikes(42); + quote.setLangue("fr"); + quote.setIsValide(true); + quote.setReason("Vérifiée manuellement"); + quote.setCaracter(caracter); + quote.setSource(source); + quote.setUserVerif(user); + + assertEquals(1L, quote.getId()); + assertEquals("Ceci est une citation.", quote.getContent()); + assertEquals(42, quote.getLikes()); + assertEquals("fr", quote.getLangue()); + assertTrue(quote.getIsValide()); + assertEquals("Vérifiée manuellement", quote.getReason()); + assertEquals(caracter, quote.getCaracter()); + assertEquals(source, quote.getSource()); + assertEquals(user, quote.getUserVerif()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/RecordQuizIdTest.java b/src/test/java/com/example/wfwebapi/model/RecordQuizIdTest.java new file mode 100644 index 0000000..0aca0d5 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/RecordQuizIdTest.java @@ -0,0 +1,37 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class RecordQuizIdTest { + + @Test + void testGettersAndSetters() { + RecordQuizId id = new RecordQuizId(); + id.setUser(1L); + id.setQuiz(2L); + + assertEquals(1L, id.getUser()); + assertEquals(2L, id.getQuiz()); + } + + @Test + void testConstructor() { + RecordQuizId id = new RecordQuizId(3L, 4L); + + assertEquals(3L, id.getUser()); + assertEquals(4L, id.getQuiz()); + } + + @Test + void testEqualsAndHashCode() { + RecordQuizId id1 = new RecordQuizId(1L, 2L); + RecordQuizId id2 = new RecordQuizId(1L, 2L); + RecordQuizId id3 = new RecordQuizId(2L, 1L); + + assertEquals(id1, id2); + assertEquals(id1.hashCode(), id2.hashCode()); + assertNotEquals(id1, id3); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/RecordQuizTest.java b/src/test/java/com/example/wfwebapi/model/RecordQuizTest.java new file mode 100644 index 0000000..9da2c14 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/RecordQuizTest.java @@ -0,0 +1,28 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class RecordQuizTest { + + @Test + void testGettersAndSetters() { + RecordQuiz record = new RecordQuiz(); + RecordQuizId id = new RecordQuizId(); + User user = new User(); + Quiz quiz = new Quiz(); + + record.setId(id); + record.setUser(user); + record.setQuiz(quiz); + record.setNbPoint(8); + record.setTimeQ(120); + + assertEquals(id, record.getId()); + assertEquals(user, record.getUser()); + assertEquals(quiz, record.getQuiz()); + assertEquals(8, record.getNbPoint()); + assertEquals(120, record.getTimeQ()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/SourceTest.java b/src/test/java/com/example/wfwebapi/model/SourceTest.java new file mode 100644 index 0000000..e573229 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/SourceTest.java @@ -0,0 +1,21 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class SourceTest { + + @Test + void testGettersAndSetters() { + Source source = new Source(); + + source.setId(1L); + source.setTitle("Discours historique"); + source.setDateS(1945); + + assertEquals(1L, source.getId()); + assertEquals("Discours historique", source.getTitle()); + assertEquals(1945, source.getDateS()); + } +} diff --git a/src/test/java/com/example/wfwebapi/model/UserTest.java b/src/test/java/com/example/wfwebapi/model/UserTest.java new file mode 100644 index 0000000..f060fc4 --- /dev/null +++ b/src/test/java/com/example/wfwebapi/model/UserTest.java @@ -0,0 +1,31 @@ +package com.example.wfwebapi.model; + +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; + +import static org.junit.jupiter.api.Assertions.*; + +class UserTest { + + @Test + void testGettersAndSetters() { + User user = new User(); + Image image = new Image(); + LocalDate creationDate = LocalDate.of(2024, 1, 1); + + user.setId(1L); + user.setUsername("testuser"); + user.setEmail("test@example.com"); + user.setPassword("securePassword123"); + user.setImage(image); + user.setCreation(creationDate); + + assertEquals(1L, user.getId()); + assertEquals("testuser", user.getUsername()); + assertEquals("test@example.com", user.getEmail()); + assertEquals("securePassword123", user.getPassword()); + assertEquals(image, user.getImage()); + assertEquals(creationDate, user.getCreation()); + } +}