mirror of
https://github.com/Prominence/car-repair-site.git
synced 2026-01-09 19:56:43 +03:00
Added tests for controller classes. Small improvements.
This commit is contained in:
parent
6e95419389
commit
c9860f2e15
@ -2,11 +2,8 @@ package com.github.prominence.carrepair;
|
|||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.autoconfigure.domain.EntityScan;
|
|
||||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|
||||||
|
|
||||||
@EnableJpaRepositories("com.github.prominence.carrepair.repository")
|
// @EnableJpaRepositories and @EntityScan annotations are not required as all classes are placed in the main application package or its sub package(s).
|
||||||
@EntityScan("com.github.prominence.carrepair.model")
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class CarRepairApplication {
|
public class CarRepairApplication {
|
||||||
|
|
||||||
@ -15,5 +12,4 @@ public class CarRepairApplication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// TODO: tests
|
|
||||||
// TODO: big data
|
// TODO: big data
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package com.github.prominence.carrepair.controller;
|
package com.github.prominence.carrepair.controller;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.controller.exception.ResourceNotFoundException;
|
||||||
import com.github.prominence.carrepair.model.domain.Client;
|
import com.github.prominence.carrepair.model.domain.Client;
|
||||||
import com.github.prominence.carrepair.model.dto.ClientDto;
|
import com.github.prominence.carrepair.model.dto.ClientDto;
|
||||||
import com.github.prominence.carrepair.service.ClientService;
|
import com.github.prominence.carrepair.service.ClientService;
|
||||||
@ -57,7 +58,7 @@ public class ClientController {
|
|||||||
model.addAttribute("clientDto", clientService.convertToDto(clientOptional.get()));
|
model.addAttribute("clientDto", clientService.convertToDto(clientOptional.get()));
|
||||||
return "client/edit";
|
return "client/edit";
|
||||||
} else {
|
} else {
|
||||||
return "redirect:/client";
|
throw new ResourceNotFoundException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.github.prominence.carrepair.controller;
|
package com.github.prominence.carrepair.controller;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.controller.exception.ResourceNotFoundException;
|
||||||
import com.github.prominence.carrepair.enums.OrderStatus;
|
import com.github.prominence.carrepair.enums.OrderStatus;
|
||||||
import com.github.prominence.carrepair.model.domain.Mechanic;
|
import com.github.prominence.carrepair.model.domain.Mechanic;
|
||||||
import com.github.prominence.carrepair.model.dto.MechanicDto;
|
import com.github.prominence.carrepair.model.dto.MechanicDto;
|
||||||
@ -58,7 +59,7 @@ public class MechanicController {
|
|||||||
model.addAttribute("mechanicDto", mechanicService.convertToDto(mechanicOptional.get()));
|
model.addAttribute("mechanicDto", mechanicService.convertToDto(mechanicOptional.get()));
|
||||||
return "mechanic/edit";
|
return "mechanic/edit";
|
||||||
} else {
|
} else {
|
||||||
return "redirect:/mechanic";
|
throw new ResourceNotFoundException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.github.prominence.carrepair.controller;
|
package com.github.prominence.carrepair.controller;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.controller.exception.ResourceNotFoundException;
|
||||||
import com.github.prominence.carrepair.enums.OrderStatus;
|
import com.github.prominence.carrepair.enums.OrderStatus;
|
||||||
import com.github.prominence.carrepair.model.domain.Order;
|
import com.github.prominence.carrepair.model.domain.Order;
|
||||||
import com.github.prominence.carrepair.model.dto.OrderDto;
|
import com.github.prominence.carrepair.model.dto.OrderDto;
|
||||||
@ -63,7 +64,7 @@ public class OrderController {
|
|||||||
model.addAttribute("orderStatuses", OrderStatus.values());
|
model.addAttribute("orderStatuses", OrderStatus.values());
|
||||||
return "order/edit";
|
return "order/edit";
|
||||||
} else {
|
} else {
|
||||||
return "redirect:/order";
|
throw new ResourceNotFoundException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,8 @@
|
|||||||
|
package com.github.prominence.carrepair.controller.exception;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||||
|
|
||||||
|
@ResponseStatus(value = HttpStatus.NOT_FOUND)
|
||||||
|
public class ResourceNotFoundException extends RuntimeException {
|
||||||
|
}
|
||||||
@ -69,6 +69,8 @@ public class DemoDataPopulator {
|
|||||||
long mechanicsCount = mechanicService.getMechanicCount();
|
long mechanicsCount = mechanicService.getMechanicCount();
|
||||||
long clientsCount = clientService.getClientCount();
|
long clientsCount = clientService.getClientCount();
|
||||||
|
|
||||||
|
if (mechanicsCount == 0 || clientsCount == 0) return args -> {};
|
||||||
|
|
||||||
List<Order> demoOrderList = Stream.generate(() -> {
|
List<Order> demoOrderList = Stream.generate(() -> {
|
||||||
Order order = new Order();
|
Order order = new Order();
|
||||||
order.setOrderStatus(orderStatuses[RandomUtils.nextInt(0, 3)]);
|
order.setOrderStatus(orderStatuses[RandomUtils.nextInt(0, 3)]);
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.github.prominence.carrepair.service;
|
package com.github.prominence.carrepair.service;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.controller.exception.ResourceNotFoundException;
|
||||||
import com.github.prominence.carrepair.enums.OrderStatus;
|
import com.github.prominence.carrepair.enums.OrderStatus;
|
||||||
import com.github.prominence.carrepair.model.domain.Mechanic;
|
import com.github.prominence.carrepair.model.domain.Mechanic;
|
||||||
import com.github.prominence.carrepair.model.domain.Order;
|
import com.github.prominence.carrepair.model.domain.Order;
|
||||||
@ -71,6 +72,7 @@ public class MechanicService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Map<OrderStatus, Integer> getOrderStatistics(Long mechanicId) {
|
public Map<OrderStatus, Integer> getOrderStatistics(Long mechanicId) {
|
||||||
|
if (!mechanicRepository.findById(mechanicId).isPresent()) throw new ResourceNotFoundException();
|
||||||
Map<OrderStatus, Integer> statistics = new HashMap<>();
|
Map<OrderStatus, Integer> statistics = new HashMap<>();
|
||||||
statistics.put(OrderStatus.SCHEDULED, 0);
|
statistics.put(OrderStatus.SCHEDULED, 0);
|
||||||
statistics.put(OrderStatus.ACCEPTED, 0);
|
statistics.put(OrderStatus.ACCEPTED, 0);
|
||||||
|
|||||||
@ -0,0 +1,199 @@
|
|||||||
|
package com.github.prominence.carrepair.controller;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.model.domain.Client;
|
||||||
|
import com.github.prominence.carrepair.service.ClientService;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
|
||||||
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.lessThan;
|
||||||
|
import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest
|
||||||
|
@AutoConfigureTestDatabase
|
||||||
|
@AutoConfigureMockMvc
|
||||||
|
public class ClientControllerIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ClientService clientService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestIndexPage_thenReturnFirstPageOfIndex() throws Exception {
|
||||||
|
// given
|
||||||
|
Client testClient = new Client("testFirstName", "testMiddleName", "testLastName", "testPhone");
|
||||||
|
clientService.save(testClient);
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/client")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("clientList", "totalPages")).
|
||||||
|
andExpect(model().attribute("totalPages", 11)). // 100 demo clients + 1 from setup
|
||||||
|
andExpect(model().attribute("clientList", hasSize(10))).
|
||||||
|
andExpect(view().name("client/index"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestIndexLastPage_thenReturnLastPageOfIndex() throws Exception {
|
||||||
|
// given
|
||||||
|
Client testClient = new Client("testFirstName", "testMiddleName", "testLastName", "testPhone");
|
||||||
|
clientService.save(testClient);
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/client").param("page", "10")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("clientList", "totalPages")).
|
||||||
|
andExpect(model().attribute("totalPages", 11)). // 100 demo clients + 1 from setup
|
||||||
|
andExpect(model().attribute("clientList", hasSize(lessThan(10)))).
|
||||||
|
andExpect(view().name("client/index"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestCreateClientPage_thenReturnCreatePageWithEmptyDto() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/client/create")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("clientDto")).
|
||||||
|
andExpect(view().name("client/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestEditWithoutId_thenReturnNotFount() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/client/edit")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestEditWithIncorrectId_thenRedirectToIndex() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/client/edit/{id}", -34)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestEditWithCorrectId_thenReturnEditPage() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/client/edit/{id}", 1)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("clientDto")).
|
||||||
|
andExpect(view().name("client/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitCorrectClientFromEditPage_thenRedirectToIndex() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/client/update/{id}", 100).
|
||||||
|
param("id", "100").
|
||||||
|
param("firstName", "changedTestFirstName").
|
||||||
|
param("middleName", "changedTestMiddleName").
|
||||||
|
param("lastName", "changedTestLastName").
|
||||||
|
param("phone", "changedTestPhone")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().is3xxRedirection()).
|
||||||
|
andExpect(redirectedUrl("/client"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitIncorrectClientFromEditPage_thenStayOnPage() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/client/update/{id}", 100).
|
||||||
|
param("id", "100").
|
||||||
|
param("firstName", "").
|
||||||
|
param("middleName", "changedTestMiddleName").
|
||||||
|
param("lastName", "changedTestLastName").
|
||||||
|
param("phone", "changedTestPhone")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(view().name("client/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitCorrectClientFromCreatePage_thenRedirectToIndex() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/client/create").
|
||||||
|
param("firstName", "changedTestFirstName").
|
||||||
|
param("middleName", "changedTestMiddleName").
|
||||||
|
param("lastName", "changedTestLastName").
|
||||||
|
param("phone", "changedTestPhone")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().is3xxRedirection()).
|
||||||
|
andExpect(redirectedUrl("/client"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitIncorrectClientFromCreatePage_thenStayOnPage() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/client/create").
|
||||||
|
param("firstName", "").
|
||||||
|
param("middleName", "changedTestMiddleName").
|
||||||
|
param("lastName", "changedTestLastName").
|
||||||
|
param("phone", "changedTestPhone")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(view().name("client/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeleteCorrectClient_thenReturnOk() throws Exception {
|
||||||
|
// given
|
||||||
|
Client testClient = new Client("testFirstName", "testMiddleName", "testLastName", "testPhone");
|
||||||
|
Long id = clientService.save(testClient).getId();
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
delete("/client/delete/{id}", id)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeleteIncorrectClient_thenReturnNotFount() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
delete("/client/delete/{id}", -23)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeleteWithoutId_thenReturnNotFound() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
delete("/client/delete")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package com.github.prominence.carrepair.controller;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.controller.advice.GlobalInfoAdvice;
|
||||||
|
import com.github.prominence.carrepair.service.ClientService;
|
||||||
|
import com.github.prominence.carrepair.service.MechanicService;
|
||||||
|
import com.github.prominence.carrepair.service.OrderService;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
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.boot.test.mock.mockito.MockBeans;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@WebMvcTest({HomeController.class, GlobalInfoAdvice.class})
|
||||||
|
@MockBeans({@MockBean(ClientService.class), @MockBean(MechanicService.class), @MockBean(OrderService.class)})
|
||||||
|
public class HomeControllerUnitTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCallHomePage_thenReturnHomePage() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,236 @@
|
|||||||
|
package com.github.prominence.carrepair.controller;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.enums.OrderStatus;
|
||||||
|
import com.github.prominence.carrepair.model.domain.Mechanic;
|
||||||
|
import com.github.prominence.carrepair.service.MechanicService;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
|
||||||
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.hasKey;
|
||||||
|
import static org.hamcrest.Matchers.lessThan;
|
||||||
|
import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
|
||||||
|
import static org.hamcrest.core.AllOf.allOf;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest
|
||||||
|
@AutoConfigureTestDatabase
|
||||||
|
@AutoConfigureMockMvc
|
||||||
|
public class MechanicControllerIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MechanicService mechanicService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestIndexPage_thenReturnFirstPageOfIndex() throws Exception {
|
||||||
|
// given
|
||||||
|
Mechanic testMechanic = new Mechanic("testFirstName", "testMiddleName", "testLastName", BigDecimal.ONE);
|
||||||
|
mechanicService.save(testMechanic);
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/mechanic")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("mechanicList", "totalPages")).
|
||||||
|
andExpect(model().attribute("totalPages", 11)). // 100 demo mechanics + 1 from setup
|
||||||
|
andExpect(model().attribute("mechanicList", hasSize(10))).
|
||||||
|
andExpect(view().name("mechanic/index"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestIndexLastPage_thenReturnLastPageOfIndex() throws Exception {
|
||||||
|
// given
|
||||||
|
Mechanic testMechanic = new Mechanic("testFirstName", "testMiddleName", "testLastName", BigDecimal.ONE);
|
||||||
|
mechanicService.save(testMechanic);
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/mechanic").param("page", "10")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("mechanicList", "totalPages")).
|
||||||
|
andExpect(model().attribute("totalPages", 11)). // 100 demo mechanics + 1 from setup
|
||||||
|
andExpect(model().attribute("mechanicList", hasSize(lessThan(10)))).
|
||||||
|
andExpect(view().name("mechanic/index"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestCreateMechanicPage_thenReturnCreatePageWithEmptyDto() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/mechanic/create")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("mechanicDto")).
|
||||||
|
andExpect(view().name("mechanic/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestEditWithoutId_thenReturnNotFount() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/mechanic/edit")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestEditWithIncorrectId_thenRedirectToIndex() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/mechanic/edit/{id}", -34)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestEditWithCorrectId_thenReturnEditPage() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/mechanic/edit/{id}", 1)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("mechanicDto")).
|
||||||
|
andExpect(view().name("mechanic/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitCorrectMechanicFromEditPage_thenRedirectToIndex() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/mechanic/update/{id}", 100).
|
||||||
|
param("id", "100").
|
||||||
|
param("firstName", "changedTestFirstName").
|
||||||
|
param("middleName", "changedTestMiddleName").
|
||||||
|
param("lastName", "changedTestLastName").
|
||||||
|
param("hourlyPayment", BigDecimal.TEN.toString())
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().is3xxRedirection()).
|
||||||
|
andExpect(redirectedUrl("/mechanic"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitIncorrectMechanicFromEditPage_thenStayOnPage() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/mechanic/update/{id}", 100).
|
||||||
|
param("id", "100").
|
||||||
|
param("firstName", "").
|
||||||
|
param("middleName", "changedTestMiddleName").
|
||||||
|
param("lastName", "changedTestLastName").
|
||||||
|
param("hourlyPayment", BigDecimal.TEN.toString())
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(view().name("mechanic/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitCorrectMechanicFromCreatePage_thenRedirectToIndex() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/mechanic/create").
|
||||||
|
param("firstName", "changedTestFirstName").
|
||||||
|
param("middleName", "changedTestMiddleName").
|
||||||
|
param("lastName", "changedTestLastName").
|
||||||
|
param("hourlyPayment", BigDecimal.TEN.toString())
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().is3xxRedirection()).
|
||||||
|
andExpect(redirectedUrl("/mechanic"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitIncorrectMechanicFromCreatePage_thenStayOnPage() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/mechanic/create").
|
||||||
|
param("firstName", "").
|
||||||
|
param("middleName", "changedTestMiddleName").
|
||||||
|
param("lastName", "changedTestLastName").
|
||||||
|
param("hourlyPayment", BigDecimal.TEN.toString())
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(view().name("mechanic/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeleteCorrectMechanic_thenReturnOk() throws Exception {
|
||||||
|
// given
|
||||||
|
Mechanic testMechanic = new Mechanic("testFirstName", "testMiddleName", "testLastName", BigDecimal.ONE);
|
||||||
|
Long id = mechanicService.save(testMechanic).getId();
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
delete("/mechanic/delete/{id}", id)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeleteIncorrectMechanic_thenReturnNotFount() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
delete("/mechanic/delete/{id}", -23)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeleteWithoutId_thenReturnNotFound() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
delete("/mechanic/delete")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestStatisticsPage_thenReturnStatistics() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/mechanic/statistics/{id}", 1)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attribute("statistics", allOf(
|
||||||
|
hasKey(OrderStatus.SCHEDULED),
|
||||||
|
hasKey(OrderStatus.DONE),
|
||||||
|
hasKey(OrderStatus.ACCEPTED)
|
||||||
|
))).
|
||||||
|
andExpect(view().name("mechanic/statistics"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestStatisticsPageForWrongMechanic_thenReturnNotFound() throws Exception{
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/mechanic/statistics/{id}", -123)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestStatisticsPageWithoutId_thenReturnNotFound() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/mechanic/statistics")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,230 @@
|
|||||||
|
package com.github.prominence.carrepair.controller;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.enums.OrderStatus;
|
||||||
|
import com.github.prominence.carrepair.model.domain.Client;
|
||||||
|
import com.github.prominence.carrepair.model.domain.Mechanic;
|
||||||
|
import com.github.prominence.carrepair.model.domain.Order;
|
||||||
|
import com.github.prominence.carrepair.service.ClientService;
|
||||||
|
import com.github.prominence.carrepair.service.MechanicService;
|
||||||
|
import com.github.prominence.carrepair.service.OrderService;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
|
||||||
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
|
||||||
|
import static org.hamcrest.Matchers.lessThan;
|
||||||
|
import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest
|
||||||
|
@AutoConfigureTestDatabase
|
||||||
|
@AutoConfigureMockMvc
|
||||||
|
public class OrderControllerIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OrderService orderService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ClientService clientService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MechanicService mechanicService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestIndexPage_thenReturnFirstPageOfIndex() throws Exception {
|
||||||
|
// given
|
||||||
|
Order testOrder = getTestOrder();
|
||||||
|
orderService.save(testOrder);
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/order")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("orderList", "totalPages")).
|
||||||
|
andExpect(model().attribute("totalPages", 1)).
|
||||||
|
andExpect(model().attribute("orderList", hasSize(greaterThanOrEqualTo(1)))).
|
||||||
|
andExpect(view().name("order/index"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestIndexSecondPage_thenReturnSecondPageOfIndex() throws Exception {
|
||||||
|
// given
|
||||||
|
Stream.generate(this::getTestOrder).limit(11).forEach(orderService::save);
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/order").param("page", "1")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("orderList", "totalPages")).
|
||||||
|
andExpect(model().attribute("totalPages", 2)).
|
||||||
|
andExpect(model().attribute("orderList", hasSize(lessThan(10)))).
|
||||||
|
andExpect(view().name("order/index"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestCreateOrderPage_thenReturnCreatePageWithEmptyDto() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/order/create")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("orderDto")).
|
||||||
|
andExpect(view().name("order/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestEditWithoutId_thenReturnNotFount() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/order/edit")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestEditWithIncorrectId_thenRedirectToIndex() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/order/edit/{id}", -34)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRequestEditWithCorrectId_thenReturnEditPage() throws Exception {
|
||||||
|
// given
|
||||||
|
Order testOrder = getTestOrder();
|
||||||
|
Long id = orderService.save(testOrder).getId();
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
get("/order/edit/{id}", id)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(model().attributeExists("orderDto")).
|
||||||
|
andExpect(view().name("order/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitCorrectOrderFromEditPage_thenRedirectToIndex() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/order/update/{id}", 100).
|
||||||
|
param("id", "100").
|
||||||
|
param("description", "testDescription").
|
||||||
|
param("clientId", "1").
|
||||||
|
param("mechanicId", "1").
|
||||||
|
param("createdOnDate", "1996-02-07 14:12:12").
|
||||||
|
param("totalPrice", "123").
|
||||||
|
param("orderStatus", "Scheduled")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().is3xxRedirection()).
|
||||||
|
andExpect(redirectedUrl("/order"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitIncorrectOrderFromEditPage_thenStayOnPage() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/order/update/{id}", 100).
|
||||||
|
param("id", "100").
|
||||||
|
param("description", "testDescription").
|
||||||
|
param("clientId", "1")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(view().name("order/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitCorrectOrderFromCreatePage_thenRedirectToIndex() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/order/create").
|
||||||
|
param("id", "100").
|
||||||
|
param("description", "testDescription").
|
||||||
|
param("clientId", "1").
|
||||||
|
param("mechanicId", "1").
|
||||||
|
param("createdOnDate", "1996-02-07 14:12:12").
|
||||||
|
param("totalPrice", "123").
|
||||||
|
param("orderStatus", "Scheduled")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().is3xxRedirection()).
|
||||||
|
andExpect(redirectedUrl("/order"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSubmitIncorrectOrderFromCreatePage_thenStayOnPage() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
post("/order/create").
|
||||||
|
param("id", "100").
|
||||||
|
param("description", "testDescription").
|
||||||
|
param("clientId", "1").
|
||||||
|
param("totalPrice", "123").
|
||||||
|
param("orderStatus", "Scheduled")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk()).
|
||||||
|
andExpect(view().name("order/edit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeleteCorrectOrder_thenReturnOk() throws Exception {
|
||||||
|
// given
|
||||||
|
Order testOrder = getTestOrder();
|
||||||
|
Long id = orderService.save(testOrder).getId();
|
||||||
|
|
||||||
|
// expected
|
||||||
|
mockMvc.perform(
|
||||||
|
delete("/order/delete/{id}", id)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeleteIncorrectOrder_thenReturnNotFount() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
delete("/order/delete/{id}", -23)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeleteWithoutId_thenReturnNotFound() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
delete("/order/delete")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Order getTestOrder() {
|
||||||
|
Client testClient = new Client("1", "1", "1", "1");
|
||||||
|
clientService.save(testClient);
|
||||||
|
Mechanic testMechanic = new Mechanic("1", "1", "1", BigDecimal.ONE);
|
||||||
|
mechanicService.save(testMechanic);
|
||||||
|
return new Order("11", testClient, testMechanic, LocalDateTime.now(), null, BigDecimal.TEN, OrderStatus.SCHEDULED.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
package com.github.prominence.carrepair.controller.advice;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.service.ClientService;
|
||||||
|
import com.github.prominence.carrepair.service.MechanicService;
|
||||||
|
import com.github.prominence.carrepair.service.OrderService;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
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.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.ui.ExtendedModelMap;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@WebMvcTest(GlobalInfoAdvice.class)
|
||||||
|
public class GlobalInfoAdviceUnitTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GlobalInfoAdvice globalInfoAdvice;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private ClientService clientService;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private MechanicService mechanicService;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private OrderService orderService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenAdviceIsFinished_thenModelIsFilled() {
|
||||||
|
// given
|
||||||
|
when(clientService.getClientCount()).thenReturn(5L);
|
||||||
|
when(mechanicService.getMechanicCount()).thenReturn(2L);
|
||||||
|
when(orderService.getOrderCount()).thenReturn(6L);
|
||||||
|
Model model = new ExtendedModelMap();
|
||||||
|
|
||||||
|
// when
|
||||||
|
globalInfoAdvice.addBadgeInfo(model);
|
||||||
|
|
||||||
|
// then
|
||||||
|
final Map<String, Object> modelMap = model.asMap();
|
||||||
|
assertThat(modelMap.get("clientsCount")).isEqualTo(5L);
|
||||||
|
assertThat(modelMap.get("mechanicsCount")).isEqualTo(2L);
|
||||||
|
assertThat(modelMap.get("ordersCount")).isEqualTo(6L);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,132 @@
|
|||||||
|
package com.github.prominence.carrepair.controller.api;
|
||||||
|
|
||||||
|
import com.github.prominence.carrepair.model.domain.Client;
|
||||||
|
import com.github.prominence.carrepair.model.domain.Mechanic;
|
||||||
|
import com.github.prominence.carrepair.service.ClientService;
|
||||||
|
import com.github.prominence.carrepair.service.MechanicService;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
|
||||||
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest
|
||||||
|
@AutoConfigureTestDatabase
|
||||||
|
@AutoConfigureMockMvc
|
||||||
|
public class AutocompleteApiControllerIntegrationTest {
|
||||||
|
|
||||||
|
private static final String CLIENT_URI = "/api/autocomplete/client";
|
||||||
|
private static final String MECHANIC_URI = "/api/autocomplete/mechanic";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ClientService clientService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MechanicService mechanicService;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
Arrays.asList(
|
||||||
|
new Client("testCase1", "1", "1", "1"),
|
||||||
|
new Client("1", "1", "1", "1"),
|
||||||
|
new Client("2", "2", "2", "2"),
|
||||||
|
new Client("3", "3", "3", "3"),
|
||||||
|
new Client("4", "4", "4", "4"),
|
||||||
|
new Client("5", "5", "5", "5"),
|
||||||
|
new Client("6", "6", "6", "6"),
|
||||||
|
new Client("7", "7", "7", "7"),
|
||||||
|
new Client("8", "8", "8", "8"),
|
||||||
|
new Client("9", "9", "9", "9")
|
||||||
|
).forEach(clientService::save);
|
||||||
|
|
||||||
|
Arrays.asList(
|
||||||
|
new Mechanic("testCase1", "1", "1", BigDecimal.ONE),
|
||||||
|
new Mechanic("1", "1", "1", BigDecimal.ONE),
|
||||||
|
new Mechanic("2", "2", "2", BigDecimal.ONE),
|
||||||
|
new Mechanic("3", "3", "3", BigDecimal.ONE),
|
||||||
|
new Mechanic("4", "4", "4", BigDecimal.ONE),
|
||||||
|
new Mechanic("5", "5", "5", BigDecimal.ONE),
|
||||||
|
new Mechanic("6", "6", "6", BigDecimal.ONE),
|
||||||
|
new Mechanic("7", "7", "7", BigDecimal.ONE),
|
||||||
|
new Mechanic("8", "8", "8", BigDecimal.ONE),
|
||||||
|
new Mechanic("9", "9", "9", BigDecimal.ONE)
|
||||||
|
).forEach(mechanicService::save);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWithoutQueryForClient_thenReturnBadRequestResponse() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get(CLIENT_URI)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isBadRequest());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWithQueryForClient_thenReturnResult() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get(CLIENT_URI).param("query", "testCase")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)).
|
||||||
|
andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenQueryNotExistingClient_thenReturnEmpty() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get(CLIENT_URI).param("query", "nonExistingClient")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)).
|
||||||
|
andExpect(content().json("[]", true)).
|
||||||
|
andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWithoutQueryForMechanic_thenReturnBadRequestResponse() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get(MECHANIC_URI)
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(status().isBadRequest());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenWithQueryForMechanic_thenReturnResult() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get(MECHANIC_URI).param("query", "testCase")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)).
|
||||||
|
andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenQueryNotExistingMechanic_thenReturnEmpty() throws Exception {
|
||||||
|
mockMvc.perform(
|
||||||
|
get(MECHANIC_URI).param("query", "nonExistingClient")
|
||||||
|
).
|
||||||
|
andDo(print()).
|
||||||
|
andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)).
|
||||||
|
andExpect(content().json("[]", true)).
|
||||||
|
andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user