From 9ed07092e020edb7649b886b08cd19e5be848df1 Mon Sep 17 00:00:00 2001 From: xmarek14 <xmarek14@fi.muni.cz> Date: Sun, 16 Apr 2023 09:49:14 +0200 Subject: [PATCH] ComponentControllerUnitTest not passing + paths in App --- .../java/cz/muni/pa165/component/App.java | 6 +- .../rest/ComponentInitControllerItTest.java | 84 +++++++++++++++++-- 2 files changed, 80 insertions(+), 10 deletions(-) diff --git a/component/src/main/java/cz/muni/pa165/component/App.java b/component/src/main/java/cz/muni/pa165/component/App.java index 3ead9f59..9d298341 100644 --- a/component/src/main/java/cz/muni/pa165/component/App.java +++ b/component/src/main/java/cz/muni/pa165/component/App.java @@ -8,9 +8,9 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; /** * Main app. */ -@SpringBootApplication(scanBasePackages = {"cz.muni.pa165.*"}) -@EnableJpaRepositories(basePackages = {"cz.muni.pa165.*"}) -@EntityScan("cz.muni.pa165.*") +@SpringBootApplication(scanBasePackages = {"cz.muni.pa165.component"}) +@EnableJpaRepositories(basePackages = {"cz.muni.pa165.component.data.repository"}) +@EntityScan("cz.muni.pa165.component.data.model") public class App { public static void main(String[] args) { diff --git a/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerItTest.java b/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerItTest.java index 3c9619a4..defe54a0 100644 --- a/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerItTest.java +++ b/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerItTest.java @@ -1,25 +1,95 @@ package cz.muni.pa165.component.rest; +import static org.mockito.BDDMockito.given; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + import com.fasterxml.jackson.databind.ObjectMapper; +import java.math.BigDecimal; + +import cz.muni.pa165.common_library.dtos.CarComponentDto; +import cz.muni.pa165.component.data.model.CarComponent; import cz.muni.pa165.component.service.ComponentService; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; +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(ComponentController.class) +class ComponentControllerUnitTest { -@SpringBootTest -@AutoConfigureMockMvc -class ComponentInitControllerItTest { + private static final Logger log = LoggerFactory.getLogger( + ComponentInitControllerUnitTest.class + ); @Autowired private MockMvc mockMvc; + @MockBean + private ComponentService componentService; + @Autowired private ObjectMapper objectMapper; - @Autowired - ComponentService componentInitService; + @Test + void createCarComponentTest() throws Exception { + log.debug("create carComponent"); + + Long id = 1L; + String name = "Engine"; + BigDecimal one = BigDecimal.ONE; + String manufacturer = "Ferrari"; + + CarComponent carComponent = new CarComponent(); + carComponent.setId(id); + carComponent.setName(name); + carComponent.setWeight(one); + carComponent.setPrice(one); + carComponent.setManufacturer(manufacturer); + CarComponentDto carComponentDto = CarComponentDto.builder() + .id(id) + .name(name) + .weight(one) + .price(one) + .manufacturer(manufacturer) + .build(); + + given(componentService.postCarComponent(carComponentDto)).willReturn(carComponentDto); + mockMvc.perform(post("/component/") + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(carComponent))) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.id").value(id)) + .andExpect(jsonPath("$.name").value(name)) + .andExpect(jsonPath("$.weight").value(one)) + .andExpect(jsonPath("$.price").value(one)) + .andExpect(jsonPath("$.manufacturer").value(manufacturer)); + } + + @Test + void nonExistingPathTest() throws Exception { + mockMvc.perform(post("/invalidPath")) + .andExpect(status().isNotFound()); + } + + @Test + void createComponentWithNullValuesTest() throws Exception { + log.debug("create invalid engine"); + + CarComponent carComponent = new CarComponent(); + CarComponentDto carComponentDto = new CarComponentDto(); + + given(componentService.postCarComponent(carComponentDto)).willReturn(carComponentDto); + mockMvc.perform(post("/component/").contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(carComponent))) + .andExpect(status().isBadRequest()); + } } + -- GitLab