diff --git a/driver/src/main/java/cz/muni/pa165/driver/App.java b/driver/src/main/java/cz/muni/pa165/driver/App.java index d506128e67d67d4270ed020b3d05a4edb9567a2d..0e89a464efbfb9a0f5ad78993ba5329829cd0b7e 100644 --- a/driver/src/main/java/cz/muni/pa165/driver/App.java +++ b/driver/src/main/java/cz/muni/pa165/driver/App.java @@ -11,7 +11,7 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; * Main app. */ @SpringBootApplication -@EnableJpaRepositories(basePackages = {"cz.muni.pa165.driver.data.repository"}) +//@EnableJpaRepositories(basePackages = {"cz.muni.pa165.driver.data.repository"}) @EntityScan(basePackages = {"cz.muni.pa165.driver.data.model"}) @Import(RestExceptionHandler.class) public class App { diff --git a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerTest.java b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ec3f5d0a6b2eba7d51b403f7e07048583caa09df --- /dev/null +++ b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerTest.java @@ -0,0 +1,152 @@ +package cz.muni.pa165.driver.rest; + +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.BDDMockito.given; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import com.fasterxml.jackson.databind.ObjectMapper; +import cz.muni.pa165.common_library.dtos.DriverAddDto; +import cz.muni.pa165.common_library.dtos.DriverInsightDto; +import cz.muni.pa165.common_library.dtos.DriverResponseDto; +import cz.muni.pa165.common_library.dtos.DriverUpdateDto; +import cz.muni.pa165.driver.service.DriverService; +import java.util.HashMap; +import java.util.List; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +@WebMvcTest(controllers = DriverController.class) +class DriverControllerTest { + + @Autowired + private MockMvc mockMvc; + + @Autowired + private ObjectMapper objectMapper; + + @MockBean + private DriverService driverService; + + @Test + void driverAddTest() throws Exception { + + var driver = getAddDriver(); + given(driverService.addDriver(driver)).willReturn(new DriverResponseDto(1L)); + + String response = mockMvc.perform(post("/driver/add") + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(driver))) + .andExpect(status().isOk()) + .andReturn().getResponse().getContentAsString(); + DriverResponseDto driverResponseDto = objectMapper.readValue(response, DriverResponseDto.class); + Assertions.assertEquals(1L, driverResponseDto.id()); + } + + @Test + void badRequestTest() throws Exception { + + var driver = getAddDriver(); + given(driverService.addDriver(driver)).willReturn(new DriverResponseDto(1L)); + + mockMvc.perform(post("/driver/add") + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString("INVALID CONTENT"))) + .andExpect(status().isBadRequest()); + + } + + @Test + void driverGetAllTest() throws Exception { + + var driver = getAddDriver(); + given(driverService.getAllDrivers()).willReturn(List.of(getInsightDriver())); + + String response = mockMvc.perform(get("/driver/get/all")) + .andExpect(status().isOk()) + .andReturn().getResponse().getContentAsString(); + var driverResponseDto = objectMapper.readValue(response, DriverInsightDto[].class); + Assertions.assertAll( + () -> Assertions.assertEquals(1L, driverResponseDto[0].id()), + () -> Assertions.assertEquals(driver.name(), driverResponseDto[0].name()), + () -> Assertions.assertEquals(driver.surname(), driverResponseDto[0].surname()), + () -> Assertions.assertEquals(driver.characteristics(), + driverResponseDto[0].characteristics()) + ); + } + + @Test + void driverDeleteTest() throws Exception { + + given(driverService.removeDriverById(anyLong())).willReturn(new DriverResponseDto(1L)); + + String response = mockMvc.perform(delete("/driver/remove/id=1")) + .andExpect(status().isOk()) + .andReturn().getResponse().getContentAsString(); + var driverResponseDto = objectMapper.readValue(response, DriverResponseDto.class); + Assertions.assertEquals(1L, driverResponseDto.id()); + } + + @Test + void invalidPathTest() throws Exception { + + mockMvc.perform(get("/invalidPath")) + .andExpect(status().isNotFound()); + } + + @Test + void driverGetByIdTest() throws Exception { + + var driver = getAddDriver(); + given(driverService.getDriverById(anyLong())).willReturn(getInsightDriver()); + + String response = mockMvc.perform(get("/driver/get/id=1")) + .andExpect(status().isOk()) + .andReturn().getResponse().getContentAsString(); + var driverResponseDto = objectMapper.readValue(response, DriverInsightDto.class); + Assertions.assertAll( + () -> Assertions.assertEquals(1L, driverResponseDto.id()), + () -> Assertions.assertEquals(driver.name(), driverResponseDto.name()), + () -> Assertions.assertEquals(driver.surname(), driverResponseDto.surname()), + () -> Assertions.assertEquals(driver.characteristics(), driverResponseDto.characteristics()) + ); + } + + @Test + void driverUpdateByIdTest() throws Exception { + DriverUpdateDto driverUpdateDto = getUpdateDriver(); + given(driverService.updateDriverById(1L, driverUpdateDto)).willReturn(new DriverResponseDto(1L)); + + String response = mockMvc.perform(put("/driver/update/id=1") + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(driverUpdateDto))) + .andExpect(status().isOk()) + .andReturn().getResponse().getContentAsString(); + var driverResponseDto = objectMapper.readValue(response, DriverResponseDto.class); + Assertions.assertEquals(1L, driverResponseDto.id()); + } + + private DriverAddDto getAddDriver() { + var driver = new DriverAddDto("Name", + "Surname", "Nationality", new HashMap<>()); + return driver; + } + + private DriverInsightDto getInsightDriver() { + return new DriverInsightDto(1L, "Name", + "Surname", "Nationality", new HashMap<>()); + } + + private DriverUpdateDto getUpdateDriver() { + return new DriverUpdateDto("Name", + "Surname", "Nationality", new HashMap<>()); + } +} diff --git a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverInitControllerUnitTest.java b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverInitControllerUnitTest.java deleted file mode 100644 index 17491c352ab50632a4a7bddacce349f0bb0e2e86..0000000000000000000000000000000000000000 --- a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverInitControllerUnitTest.java +++ /dev/null @@ -1,78 +0,0 @@ -package cz.muni.pa165.driver.rest; - -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; - -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; - - -/** - * Tests for driver initialization controller. - */ -@WebMvcTest(controllers = DriverController.class) -class DriverInitControllerUnitTest { -// -// @Autowired -// private MockMvc mockMvc; -// -// @MockBean -// private DriverInitFacade driverInitFacade; -// -// @Autowired -// private ObjectMapper objectMapper; -// -// Driver driver; -// long id = 1L; -// String driverName = "Tom"; -// String driverSurname = "Marek"; -// String driverNationality = "Czech"; -// -// @BeforeEach -// void settingUp() { -// driver = new Driver(); -// driver.setId(id); -// driver.setMain(true); -// driver.setName(driverName); -// driver.setSurname(driverSurname); -// driver.setNationality(driverNationality); -// } -// -// -// @Test -// void createDriverTest() throws Exception { -// given(driverInitFacade.addDriver(driver)).willReturn( -// driver); -// mockMvc.perform(post("/driver/add").contentType(MediaType.APPLICATION_JSON) -// .content(objectMapper.writeValueAsString(driver))) -// .andExpect(status().isOk()); -// } -// -// @Test -// void createDriverWithAttributesTest() throws Exception { -// given(driverInitFacade.addDriver(driver)).willReturn( -// driver); -// mockMvc.perform(post("/driver/add").contentType(MediaType.APPLICATION_JSON) -// .content(objectMapper.writeValueAsString(driver))) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.id").value(id)) -// .andExpect(jsonPath("$.name").value(driverName)) -// .andExpect(jsonPath("$.surname").value(driverSurname)) -// .andExpect(jsonPath("$.main").value(true)) -// .andExpect(jsonPath("$.nationality").value(driverNationality)); -// } -// -// @Test -// void removeDriver() throws Exception { -// given(driverInitFacade.removeDriver(driver.getId())).willReturn( -// driver); -// mockMvc.perform(delete("/driver/remove") -// .queryParam("driverId", String.valueOf(driver.getId()))) -// .andExpect(status().isOk()) -// .andExpect(jsonPath("$.id").value(id)) -// .andExpect(jsonPath("$.name").value(driverName)) -// .andExpect(jsonPath("$.surname").value(driverSurname)) -// .andExpect(jsonPath("$.main").value(true)) -// .andExpect(jsonPath("$.nationality").value(driverNationality)); -// } -} diff --git a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerItTest.java b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverRepositoryTest.java similarity index 94% rename from driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerItTest.java rename to driver/src/test/java/cz/muni/pa165/driver/rest/DriverRepositoryTest.java index 13814dafebd455689e3caa59be35518bb2b68a8a..46bc52e1ef2dfa055834059de0e50212df075bbb 100644 --- a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverControllerItTest.java +++ b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverRepositoryTest.java @@ -13,7 +13,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @DataJpaTest -class DriverControllerItTest { +class DriverRepositoryTest { @Autowired private TestEntityManager entityManager; @@ -22,7 +22,7 @@ class DriverControllerItTest { private DriverRepository driverRepository; @Test - public void testSave() { + void testSave() { Driver driver = Driver.builder() .name("name") .surname("surname")