From 8890135c3adc36cc3f84d5f6a7a54aa72b9f51b5 Mon Sep 17 00:00:00 2001 From: vksingh <vksingh@nisum.com> Date: Sun, 10 May 2020 10:02:48 +0530 Subject: [PATCH] added test case for item not available --- .../ecom/service/impl/OrderServiceImpl.java | 6 ++-- .../OrderControllerComponentTest.java | 35 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ecom/service/impl/OrderServiceImpl.java b/src/main/java/com/ecom/service/impl/OrderServiceImpl.java index 1088487..a595689 100644 --- a/src/main/java/com/ecom/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/ecom/service/impl/OrderServiceImpl.java @@ -96,12 +96,14 @@ public class OrderServiceImpl implements OrderService { itemService.save(item); } else if(e.getQty()==0){ - response=EcomUtils.ITEMS_QUANTITY_SHOULD_NOT_BE_ZERO; + response=EcomUtils.ITEMS_QUANTITY_SHOULD_NOT_BE_ZERO+" for item id "+e.getItemId()+" or remove that item from the cart/json"; + outOfStock=true; + break; } else{ response=item.getQty()>0?"item "+item.getName()+" with id="+e.getItemId()+" is the first item we found out of stock for your purchase You can purchase only "+item.getQty()+" "+item.getName() - :"Item " +item.getName()+"with id="+e.getItemId()+" is out of Stock please visit after some time."; + :"Item " +item.getName()+" with id="+e.getItemId()+" is out of Stock please visit after some time."; outOfStock=true; break; } diff --git a/src/test/java/com/ecom/controller/OrderControllerComponentTest.java b/src/test/java/com/ecom/controller/OrderControllerComponentTest.java index 39d44ec..1ddb88c 100644 --- a/src/test/java/com/ecom/controller/OrderControllerComponentTest.java +++ b/src/test/java/com/ecom/controller/OrderControllerComponentTest.java @@ -9,6 +9,7 @@ import com.ecom.repository.ItemRepository; import com.ecom.repository.OrderRepository; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -19,6 +20,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.Arrays; import java.util.List; @@ -29,6 +31,7 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.when; @SpringBootTest +@ExtendWith(SpringExtension.class) @ContextConfiguration(classes = TestConfig.class) public class OrderControllerComponentTest { @@ -80,6 +83,24 @@ public class OrderControllerComponentTest { ); } + @DisplayName("This method will test the orderItems method for Out of Stock If Item is Not Available, it will mock db ") + @ParameterizedTest + @MethodSource("getOrdersOutOfStockAsItemNotFoundSource") + public void orderItemsOutOfStockIfItemNotAvailableTest(Orders orders){ + + String outOfStockRespone="Item with id "+orders.getOrderedItems().get(0).getItemId()+" not available please visit after some time."; + when(orderRepository.save(ArgumentMatchers.any(Orders.class))).thenReturn(orders); + when(itemRepository.findById(ArgumentMatchers.anyInt())).thenReturn(Optional.ofNullable(null)); + + when(itemRepository.save(ArgumentMatchers.any(Item.class))).thenReturn(null); + + ResponseEntity<String> responseEntity = orderController.orderItems(orders); + assertAll( "orderItemsTest", + ()-> assertEquals(responseEntity.getStatusCode(), HttpStatus.NOT_ACCEPTABLE,()->"status should be 200") + ,()->assertEquals(responseEntity.getBody(),outOfStockRespone,()->" messages should match") + ); + } + @DisplayName("This method will test the getOrderDetailsByCustomerEmailId method it will mock db ") @ParameterizedTest @@ -139,6 +160,10 @@ public class OrderControllerComponentTest { return Stream.of(Arguments.of(mockOutOfStockOrders())); } + private static Stream<Arguments> getOrdersOutOfStockAsItemNotFoundSource(){ + + return Stream.of(Arguments.of(mockOutOfStockOrdersAsItemNotFound())); + } private static Stream<Arguments> getOrdersSource(){ return Stream.of(Arguments.of(mockOrders())); @@ -164,6 +189,16 @@ public class OrderControllerComponentTest { orders.setOrderedItems(Arrays.asList(orderedItems)); return orders; } + public static Orders mockOutOfStockOrdersAsItemNotFound() { + Orders orders=new Orders(); + orders.setOrderId(1); + orders.setEmailId("someemail"); + OrderedItems orderedItems=new OrderedItems(); + orderedItems.setItemId(2); + orderedItems.setQty(2); + orders.setOrderedItems(Arrays.asList(orderedItems)); + return orders; + } } -- 2.18.1