You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
4.0 KiB
119 lines
4.0 KiB
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<Caracter> postResponse = restTemplate.postForEntity(getUrl(""), caracter, Caracter.class);
|
|
assertEquals(HttpStatus.OK, postResponse.getStatusCode());
|
|
Long id = Objects.requireNonNull(postResponse.getBody()).getId();
|
|
|
|
ResponseEntity<Caracter> 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<Caracter[]> 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<Caracter> request = new HttpEntity<>(c);
|
|
ResponseEntity<Caracter> 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<Void> 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<String> response = restTemplate.getForEntity(getUrl("/999999"), String.class);
|
|
assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode());
|
|
assertTrue(response.getBody().contains("Caracter non trouvé"));
|
|
}
|
|
|
|
@Test
|
|
void testDeleteCaracterNotFound() {
|
|
ResponseEntity<String> response = restTemplate.exchange(getUrl("?id=999999"), HttpMethod.DELETE, null, String.class);
|
|
assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode());
|
|
assertTrue(response.getBody().contains("Caracter non trouvé"));
|
|
}
|
|
}
|