package com.ibatis.jpetstore.persistence;
import com.ibatis.jpetstore.domain.DomainFixture;
import com.ibatis.jpetstore.domain.Item;
import com.ibatis.jpetstore.domain.LineItem;
import com.ibatis.jpetstore.domain.Order;
import com.ibatis.jpetstore.persistence.iface.ItemDao;
public class ItemDaoTest extends BasePersistenceTest {
private static final String MUTABLE_ITEM_ID = "EST-2";
private static final String READ_ONLY_ITEM_ID = "EST-1";
private static final String PRODUCT_ID = "FI-SW-01";
private ItemDao itemDao = (ItemDao) daoMgr.getDao(ItemDao.class);
public void testShouldFindItemByID() {
assertNotNull(itemDao.getItem(READ_ONLY_ITEM_ID));
}
public void testShouldListTwoItemsForGivenProduct() {
assertEquals(2, itemDao.getItemListByProduct(PRODUCT_ID).size());
}
public void testShouldVerifyItemIsInStock() {
assertTrue("Expected item to be in stock.", itemDao.isItemInStock(READ_ONLY_ITEM_ID));
}
public void testShouldVerifyItemIsOutOfStock() {
Order order = DomainFixture.newTestOrder();
itemDao.updateAllQuantitiesFromOrder(order);
assertFalse("Expected item to be out of stock.", itemDao.isItemInStock(MUTABLE_ITEM_ID));
}
public void testShouldUpdateInventoryForItem() {
Item item = itemDao.getItem(MUTABLE_ITEM_ID);
int inventory = item.getQuantity();
Order order = DomainFixture.newTestOrder();
inventory -= ((LineItem) order.getLineItems().get(0)).getQuantity();
itemDao.updateAllQuantitiesFromOrder(order);
item = itemDao.getItem(MUTABLE_ITEM_ID);
assertEquals(inventory, item.getQuantity());
}
}