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 {
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;
}
......
......@@ -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;
}
}
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