Skip to content

Commit 4afaec0

Browse files
committed
feat: first version of tests
1 parent 105a3bb commit 4afaec0

File tree

4 files changed

+135
-1
lines changed

4 files changed

+135
-1
lines changed

src/main/java/br/com/grupo63/serviceorder/controller/OrderController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public List<OrderControllerDTO> list() {
3434
return orderUseCase.list().stream().map(OrderPresenter::toDto).toList();
3535
}
3636

37-
public OrderControllerDTO update(OrderControllerDTO dto, Long orderId) throws ValidationException, NotFoundException {
37+
public OrderControllerDTO update(OrderControllerDTO dto, Long orderId) throws NotFoundException {
3838
Order entity = orderUseCase.read(orderId);
3939
OrderAdapter.fillEntity(dto, entity);
4040
entity = orderUseCase.update(entity);
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package br.com.grupo63.serviceorder.order;
2+
3+
import br.com.grupo63.serviceorder.api.controller.order.OrderAPIController;
4+
import br.com.grupo63.serviceorder.api.controller.order.dto.CreateOrderRequestDTO;
5+
import br.com.grupo63.serviceorder.controller.OrderController;
6+
import br.com.grupo63.serviceorder.controller.dto.OrderControllerDTO;
7+
import br.com.grupo63.serviceorder.entity.order.Order;
8+
import br.com.grupo63.serviceorder.entity.order.OrderItem;
9+
import br.com.grupo63.serviceorder.entity.product.Category;
10+
import br.com.grupo63.serviceorder.entity.product.Product;
11+
import br.com.grupo63.serviceorder.gateway.identification.IIdentificationGateway;
12+
import br.com.grupo63.serviceorder.gateway.identification.dto.ClientDTO;
13+
import br.com.grupo63.serviceorder.gateway.order.OrderJpaAdapter;
14+
import br.com.grupo63.serviceorder.gateway.order.OrderJpaRepository;
15+
import br.com.grupo63.serviceorder.gateway.order.entity.OrderPersistenceEntity;
16+
import br.com.grupo63.serviceorder.gateway.product.ProductJpaAdapter;
17+
import br.com.grupo63.serviceorder.gateway.product.ProductJpaRepository;
18+
import br.com.grupo63.serviceorder.gateway.product.entity.ProductPersistenceEntity;
19+
import br.com.grupo63.serviceorder.usecase.order.OrderUseCase;
20+
import jakarta.servlet.http.HttpServletRequest;
21+
import lombok.SneakyThrows;
22+
import org.junit.jupiter.api.BeforeEach;
23+
import org.junit.jupiter.api.Test;
24+
import org.mockito.InjectMocks;
25+
import org.mockito.Mock;
26+
import org.mockito.MockitoAnnotations;
27+
import org.springframework.http.HttpStatus;
28+
import org.springframework.http.ResponseEntity;
29+
import org.springframework.mock.web.MockHttpServletRequest;
30+
31+
import java.util.*;
32+
33+
import static org.junit.jupiter.api.Assertions.assertEquals;
34+
import static org.junit.jupiter.api.Assertions.assertNotNull;
35+
import static org.mockito.ArgumentMatchers.any;
36+
import static org.mockito.Mockito.*;
37+
import static org.mockito.Mockito.times;
38+
39+
public class OrderIntegrationTest {
40+
41+
@Mock
42+
private ProductJpaRepository productJpaRepository;
43+
@Mock
44+
private OrderJpaRepository orderJpaRepository;
45+
@Mock
46+
private IIdentificationGateway identificationGateway;
47+
@InjectMocks
48+
private ProductJpaAdapter productJpaAdapter;
49+
@InjectMocks
50+
private OrderJpaAdapter orderJpaAdapter;
51+
private OrderUseCase orderUseCase;
52+
private OrderController orderController;
53+
private OrderAPIController orderAPIController;
54+
55+
private final Category defaultCategory = new Category(1L, false, "category");
56+
private final Product defaultProduct = new Product(1L, false, "product", 10.0, defaultCategory);
57+
private final CreateOrderRequestDTO.Item defaultItem = new CreateOrderRequestDTO.Item(1L, 1L);
58+
private final Order defaultOrder = new Order(1L, false, 10.0, 1L, List.of());
59+
60+
private final OrderPersistenceEntity defaultOrderPersistenceEntity =
61+
new OrderPersistenceEntity(defaultOrder);
62+
private final ProductPersistenceEntity defaultProductPersistenceEntity = new ProductPersistenceEntity(defaultProduct);
63+
64+
private final CreateOrderRequestDTO defaultCreateOrderRequestDTO = new CreateOrderRequestDTO(List.of(defaultItem));
65+
private final ClientDTO defaultClientDTO = new ClientDTO();
66+
67+
@BeforeEach
68+
void setUp() {
69+
MockitoAnnotations.openMocks(this);
70+
orderUseCase = new OrderUseCase(productJpaAdapter, orderJpaAdapter, identificationGateway);
71+
orderController = new OrderController(orderUseCase);
72+
orderAPIController = new OrderAPIController(orderController);
73+
}
74+
75+
@SneakyThrows
76+
@Test
77+
void testRead_EndToEnd() {
78+
when(orderJpaRepository.findByIdAndDeletedFalse(1L)).thenReturn(Optional.of(defaultOrderPersistenceEntity));
79+
80+
ResponseEntity<OrderControllerDTO> response = orderAPIController.read(1L);
81+
assertEquals(HttpStatus.OK, response.getStatusCode());
82+
assertEquals(Objects.requireNonNull(response.getBody()).getId(), 1L);
83+
}
84+
85+
@SneakyThrows
86+
@Test
87+
void testList_EndToEnd() {
88+
when(orderJpaRepository.findByDeletedFalse()).thenReturn(List.of(defaultOrderPersistenceEntity));
89+
90+
ResponseEntity<List<OrderControllerDTO>> response = orderAPIController.list();
91+
assertEquals(HttpStatus.OK, response.getStatusCode());
92+
assertEquals(Objects.requireNonNull(response.getBody()).get(0).getId(), 1L);
93+
}
94+
95+
@SneakyThrows
96+
@Test
97+
void testCreate_EndToEnd() {
98+
HttpServletRequest mockedRequest = new MockHttpServletRequest();
99+
mockedRequest.setAttribute("clientId", Long.toString(1L));
100+
101+
when(identificationGateway.getById(1L)).thenReturn(Optional.of(defaultClientDTO));
102+
when(productJpaRepository.findByIdAndDeletedFalse(1L)).thenReturn(Optional.of(defaultProductPersistenceEntity));
103+
when(orderJpaRepository.saveAndFlush(any())).thenReturn(defaultOrderPersistenceEntity);
104+
105+
ResponseEntity<OrderControllerDTO> response = orderAPIController.create(defaultCreateOrderRequestDTO, mockedRequest);
106+
assertEquals(HttpStatus.OK, response.getStatusCode());
107+
assertNotNull(response.getBody());
108+
assertEquals(response.getBody().getId(), 1L);
109+
verify(orderJpaRepository, times(1)).saveAndFlush(any());
110+
}
111+
112+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
app:
2+
version: '@project.version@'
3+
springdoc:
4+
api-docs:
5+
enabled: false
6+
spring:
7+
jpa:
8+
hibernate:
9+
ddl-auto: create
10+
show-sql: true
11+
main:
12+
banner-mode: off
13+
output:
14+
ansi:
15+
enabled: always
16+
jwt:
17+
token:
18+
key:
19+
public: "${JWT_PUBLIC_KEY:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoNgzDuoQFLRFb3ivIA5CEHFRuqltT7xR6hFu+6xPD5q0sq8Exjue5s5MIQwkJMldk8/Dhp85OT5ULmAA5x4hPZfFlQEMlMPT5QItQImQ7UFCxBbMwksZlUQEP37Aa5OJ+KhEPBDTe0AaXqXFKxIOLEjHYWqhFHq5whxNotbuPrqLWEopCAgY4lqCe0pSoT3V+7Jszpq+czLBOl6eCbD933pK98/aVD9yA2+7LNOwmkYVyR4kvXX25K5Q/DDUZgMWyQTm3TCnfCrbdH6IH/Z12/DkePNuGFygUKDCEYPkPYnHbRXee4CXbeDkEdgZwzGJPM8gPhSUFrrzFVeihvN5OQIDAQAB}"
20+
management:
21+
endpoints:
22+
enabled-by-default: false
-2 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)