Commit 8890135c authored by vikram singh's avatar vikram singh

added test case for item not available

parent ef2b3ddc
...@@ -96,12 +96,14 @@ public class OrderServiceImpl implements OrderService { ...@@ -96,12 +96,14 @@ public class OrderServiceImpl implements OrderService {
itemService.save(item); itemService.save(item);
} }
else if(e.getQty()==0){ 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{ 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() 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; outOfStock=true;
break; break;
} }
......
...@@ -9,6 +9,7 @@ import com.ecom.repository.ItemRepository; ...@@ -9,6 +9,7 @@ import com.ecom.repository.ItemRepository;
import com.ecom.repository.OrderRepository; import com.ecom.repository.OrderRepository;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.MethodSource;
...@@ -19,6 +20,7 @@ import org.springframework.boot.test.context.SpringBootTest; ...@@ -19,6 +20,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
...@@ -29,6 +31,7 @@ import static org.junit.jupiter.api.Assertions.*; ...@@ -29,6 +31,7 @@ import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@SpringBootTest @SpringBootTest
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = TestConfig.class) @ContextConfiguration(classes = TestConfig.class)
public class OrderControllerComponentTest { public class OrderControllerComponentTest {
...@@ -80,6 +83,24 @@ 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 ") @DisplayName("This method will test the getOrderDetailsByCustomerEmailId method it will mock db ")
@ParameterizedTest @ParameterizedTest
...@@ -139,6 +160,10 @@ public class OrderControllerComponentTest { ...@@ -139,6 +160,10 @@ public class OrderControllerComponentTest {
return Stream.of(Arguments.of(mockOutOfStockOrders())); return Stream.of(Arguments.of(mockOutOfStockOrders()));
} }
private static Stream<Arguments> getOrdersOutOfStockAsItemNotFoundSource(){
return Stream.of(Arguments.of(mockOutOfStockOrdersAsItemNotFound()));
}
private static Stream<Arguments> getOrdersSource(){ private static Stream<Arguments> getOrdersSource(){
return Stream.of(Arguments.of(mockOrders())); return Stream.of(Arguments.of(mockOrders()));
...@@ -164,6 +189,16 @@ public class OrderControllerComponentTest { ...@@ -164,6 +189,16 @@ public class OrderControllerComponentTest {
orders.setOrderedItems(Arrays.asList(orderedItems)); orders.setOrderedItems(Arrays.asList(orderedItems));
return orders; 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;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment