diff --git a/src/main/java/org/store/clothstar/order/service/OrderSellerService.java b/src/main/java/org/store/clothstar/order/service/OrderSellerService.java index 99b75dd..6a9aa10 100644 --- a/src/main/java/org/store/clothstar/order/service/OrderSellerService.java +++ b/src/main/java/org/store/clothstar/order/service/OrderSellerService.java @@ -101,7 +101,6 @@ public MessageDTO approveOrder(Long orderId) { order.setterStatus(Status.APPROVE); orderSellerRepository.save(order); -// orderSellerRepository.approveOrder(orderId); messageDTO = new MessageDTO(HttpStatus.OK.value(), "주문이 정상적으로 승인 되었습니다."); return messageDTO; diff --git a/src/main/java/org/store/clothstar/order/service/OrderService.java b/src/main/java/org/store/clothstar/order/service/OrderService.java index 5eb68d7..a5a7d5f 100644 --- a/src/main/java/org/store/clothstar/order/service/OrderService.java +++ b/src/main/java/org/store/clothstar/order/service/OrderService.java @@ -20,7 +20,7 @@ import org.store.clothstar.order.dto.request.OrderRequestWrapper; import org.store.clothstar.order.repository.order.OrderDetailRepository; import org.store.clothstar.order.repository.order.OrderUserRepository; -import org.store.clothstar.order.service.OrderSave.*; +import org.store.clothstar.order.service.OrderSave.OrderSaveFacade; import org.store.clothstar.product.entity.ProductEntity; import org.store.clothstar.product.service.ProductService; import org.store.clothstar.productLine.entity.ProductLineEntity; @@ -188,6 +188,8 @@ public void cancelOrder(Long orderId) { order.setterStatus(Status.CANCEL); orderUserRepository.save(order); + + orderDetailService.restoreStockByOrder(orderId); } @Transactional diff --git a/src/test/java/org/store/clothstar/order/service/OrderServiceTest.java b/src/test/java/org/store/clothstar/order/service/OrderServiceTest.java index d8bc5e4..8914adf 100644 --- a/src/test/java/org/store/clothstar/order/service/OrderServiceTest.java +++ b/src/test/java/org/store/clothstar/order/service/OrderServiceTest.java @@ -24,11 +24,10 @@ import org.store.clothstar.order.domain.vo.Price; import org.store.clothstar.order.domain.vo.TotalPrice; import org.store.clothstar.order.dto.reponse.OrderResponse; -import org.store.clothstar.order.dto.request.CreateOrderDetailRequest; -import org.store.clothstar.order.dto.request.CreateOrderRequest; import org.store.clothstar.order.dto.request.OrderRequestWrapper; import org.store.clothstar.order.repository.order.OrderDetailRepository; import org.store.clothstar.order.repository.order.OrderUserRepository; +import org.store.clothstar.order.service.OrderSave.OrderSaveFacade; import org.store.clothstar.product.entity.ProductEntity; import org.store.clothstar.product.service.ProductService; import org.store.clothstar.productLine.entity.ProductLineEntity; @@ -65,6 +64,9 @@ class OrderServiceTest { @Mock private ProductService productService; + @Mock + private OrderSaveFacade orderSaveFacade; + @Mock private Member member; @@ -261,74 +263,16 @@ void getAllOrderSlicePaging_verify_test() { void saveOrder_verify_test() { //given OrderRequestWrapper orderRequestWrapper = mock(OrderRequestWrapper.class); - CreateOrderRequest createOrderRequest = mock(CreateOrderRequest.class); - CreateOrderDetailRequest createOrderDetailRequest = mock(CreateOrderDetailRequest.class); - - given(order.getOrderId()).willReturn(1L); + Long expectedOrderId = 1L; - given(orderRequestWrapper.getCreateOrderRequest()).willReturn(createOrderRequest); - given(orderRequestWrapper.getCreateOrderDetailRequest()).willReturn(createOrderDetailRequest); - given(createOrderRequest.getMemberId()).willReturn(1L); - given(createOrderRequest.getAddressId()).willReturn(2L); - given(memberService.getMemberByMemberId(1L)).willReturn(member); - given(addressService.getAddressById(2L)).willReturn(address); - given(createOrderRequest.toOrder(member,address)).willReturn(order); - - given(order.getTotalPrice()).willReturn(totalPrice); - given(orderDetail.getPrice()).willReturn(price); - - given(createOrderDetailRequest.getProductLineId()).willReturn(3L); - given(createOrderDetailRequest.getProductId()).willReturn(4L); - given(productLineService.findById(3L)).willReturn(Optional.of(productLineEntity)); - given(productService.findById(4L)).willReturn(Optional.of(productEntity)); - - given(createOrderDetailRequest.getQuantity()).willReturn(5); - given(productEntity.getStock()).willReturn(10L); - - given(createOrderDetailRequest.toOrderDetail(order, productLineEntity, productEntity)).willReturn(orderDetail); + given(orderSaveFacade.saveOrder(orderRequestWrapper)).willReturn(expectedOrderId); // when Long orderId = orderService.saveOrder(orderRequestWrapper); // then - then(memberService).should(times(1)).getMemberByMemberId(createOrderRequest.getMemberId()); - then(addressService).should(times(1)).getAddressById(createOrderRequest.getAddressId()); - then(productLineService).should(times(1)).findById(createOrderDetailRequest.getProductLineId()); - then(productService).should(times(1)).findById(createOrderDetailRequest.getProductId()); - then(orderUserRepository).should(times(1)).save(order); - verify(order).getOrderId(); - assertThat(orderId).isEqualTo(1L); - } - - @Test - @DisplayName("saveOrder: 주문 생성 - 주문 개수가 재고보다 많을 때 예외처리 테스트") - void saveOrder_quantity_exception_test() { - //given - OrderRequestWrapper orderRequestWrapper = mock(OrderRequestWrapper.class); - CreateOrderRequest createOrderRequest = mock(CreateOrderRequest.class); - CreateOrderDetailRequest createOrderDetailRequest = mock(CreateOrderDetailRequest.class); - - given(orderRequestWrapper.getCreateOrderRequest()).willReturn(createOrderRequest); - given(orderRequestWrapper.getCreateOrderDetailRequest()).willReturn(createOrderDetailRequest); - given(createOrderRequest.getMemberId()).willReturn(1L); - given(createOrderRequest.getAddressId()).willReturn(2L); - given(memberService.getMemberByMemberId(1L)).willReturn(member); - given(addressService.getAddressById(2L)).willReturn(address); - given(createOrderRequest.toOrder(member,address)).willReturn(order); - given(createOrderDetailRequest.getProductLineId()).willReturn(3L); - given(createOrderDetailRequest.getProductId()).willReturn(4L); - given(productLineService.findById(3L)).willReturn(Optional.of(productLineEntity)); - given(productService.findById(4L)).willReturn(Optional.of(productEntity)); - - given(createOrderDetailRequest.getQuantity()).willReturn(10); - given(productEntity.getStock()).willReturn(1L); - - //when - ResponseStatusException thrown = assertThrows(ResponseStatusException.class, () -> - orderService.saveOrder(orderRequestWrapper)); - - //then - assertEquals("400 BAD_REQUEST \"주문 개수가 재고보다 더 많습니다.\"", thrown.getMessage()); + then(orderSaveFacade).should(times(1)).saveOrder(orderRequestWrapper); + assertThat(orderId).isEqualTo(expectedOrderId); } @Test @@ -381,7 +325,8 @@ void cancelOrder_verify_test() { //then then(orderUserRepository).should(times(1)).findById(orderId); - then(orderUserRepository).should().save(order); + then(orderUserRepository).should(times(1)).save(order); + then(orderDetailService).should(times(1)).restoreStockByOrder(orderId); } @Test