/
Renonr
/
SpringProject
Обзор
Документация
Войти
/
Renonr
/
SpringProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
Spring_Branch
src/test/java/com/example/onlineshop/OrderServiceTest.java
96 строк
3 KB
Renonr
"Add OrderServiceTest and OrderService fix"
20 фев 2025, 15:35
20 фев 2025, 15:35
dc46ca0
Код
Авторство
О чём код?
package com.example.onlineshop; import com.example.onlineshop.dto.CartDTO; import com.example.onlineshop.dto.OrderDTO; import com.example.onlineshop.dto.ProductDTO; import com.example.onlineshop.models.Order; import com.example.onlineshop.models.User; import com.example.onlineshop.repositories.OrderRepository; import com.example.onlineshop.repositories.UserRepository; import com.example.onlineshop.services.CartService; import com.example.onlineshop.services.EmailService; import com.example.onlineshop.services.OrderService; import com.example.onlineshop.services.ProductService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) public class OrderServiceTest { @Mock private OrderRepository orderRepository; @Mock private CartService cartService; @Mock private ProductService productService; @Mock private UserRepository userRepository; @Mock private EmailService emailService; @InjectMocks private OrderService orderService; private User user; private ProductDTO product1; private ProductDTO product2; private CartDTO cartItem1; private CartDTO cartItem2; private List<CartDTO> cartItems; @BeforeEach void setUp() { user = new User(); user.setId(1L); user.setEmail("user@example.com"); product1 = new ProductDTO(1L, "iPhone", "смартфон", BigDecimal.valueOf(1000), 10, Arrays.asList(1L), null); product2 = new ProductDTO(2L, "MacBook", "ноутбук", BigDecimal.valueOf(2000), 5, Arrays.asList(2L), null); cartItem1 = new CartDTO(1L, product1.getId(), product1.getName(), 2); cartItem2 = new CartDTO(2L, product2.getId(), product2.getName(), 1); cartItems = Arrays.asList(cartItem1, cartItem2); } @Test void placeOrder_ShouldCreateOrderCorrectly() { when(userRepository.findByEmail(anyString())).thenReturn(Optional.of(user)); when(cartService.getUserCart(anyString())).thenReturn(cartItems); when(productService.getProductById(1L)).thenReturn(product1); when(productService.getProductById(2L)).thenReturn(product2); when(orderRepository.save(any(Order.class))).thenAnswer(invocation -> invocation.getArgument(0)); OrderDTO orderDTO = orderService.placeOrder("user@example.com"); assertNotNull(orderDTO); assertEquals(user.getId(), orderDTO.getUserId()); assertEquals(user.getEmail(), orderDTO.getUserEmail()); assertEquals(BigDecimal.valueOf(4000), orderDTO.getTotalPrice()); verify(cartService, times(1)).clearCart("user@example.com"); verify(emailService, times(1)).sendOrderConfirmationEmail(any(Order.class)); } }