package com.ibatis.jpetstore.presentation; import org.apache.struts.beanaction.ActionContext; import org.jmock.Mock; import org.jmock.cglib.MockObjectTestCase; import com.ibatis.jpetstore.domain.Cart; import com.ibatis.jpetstore.domain.CartItem; import com.ibatis.jpetstore.domain.Item; import com.ibatis.jpetstore.service.CatalogService; public class CartBeanTest extends MockObjectTestCase { public void testShouldSuccessfullyReturnFromViewCart() { Mock catalogServiceMock = mock(CatalogService.class); CartBean bean = new CartBean((CatalogService) catalogServiceMock.proxy()); assertEquals(AbstractBean.SUCCESS, bean.viewCart()); } public void testShouldSwitchPagesBackAndForth() { Mock catalogServiceMock = mock(CatalogService.class); CartBean bean = new CartBean((CatalogService) catalogServiceMock.proxy()); assertEquals(AbstractBean.SUCCESS, bean.viewCart()); Cart cart = new Cart(); for (int i = 0; i < cart.getCartItemList().getPageSize() * 2; i++) { cart.getCartItemList().add(new Item()); } bean.setCart(cart); bean.setPageDirection("next"); assertEquals(AbstractBean.SUCCESS, bean.switchCartPage()); assertEquals(1, cart.getCartItemList().getPageIndex()); bean.setPageDirection("previous"); assertEquals(AbstractBean.SUCCESS, bean.switchCartPage()); assertEquals(0, cart.getCartItemList().getPageIndex()); } public void testShouldClearAllCartData() { Mock catalogServiceMock = mock(CatalogService.class); CartBean bean = new CartBean((CatalogService) catalogServiceMock.proxy()); Cart cart = new Cart(); bean.setCart(cart); bean.setWorkingItemId("not null"); bean.setPageDirection("not null"); bean.clear(); assertFalse(cart == bean.getCart()); assertNull(bean.getWorkingItemId()); assertNull(bean.getPageDirection()); } public void testShouldAddItemToCart() { Mock catalogServiceMock = mock(CatalogService.class); catalogServiceMock.expects(atLeastOnce()).method("isItemInStock").with(NOT_NULL).will(returnValue(true)); Item item = new Item(); item.setItemId("AnID"); catalogServiceMock.expects(atLeastOnce()).method("getItem").with(NOT_NULL).will(returnValue(item)); CartBean bean = new CartBean((CatalogService) catalogServiceMock.proxy()); bean.setWorkingItemId("SomeItem"); assertEquals(AbstractBean.SUCCESS, bean.addItemToCart()); CartItem cartItem = (CartItem) bean.getCart().getCartItemList().get(0); assertEquals(1, cartItem.getQuantity()); assertEquals(AbstractBean.SUCCESS, bean.addItemToCart()); assertEquals(2, cartItem.getQuantity()); } public void testShouldFailToRemoveItemFromCart() { Mock catalogServiceMock = mock(CatalogService.class); CartBean bean = new CartBean((CatalogService) catalogServiceMock.proxy()); bean.setWorkingItemId("nonexistant"); assertEquals(AbstractBean.FAILURE, bean.removeItemFromCart()); } public void testShouldRemoveItemFromCart() { Mock catalogServiceMock = mock(CatalogService.class); catalogServiceMock.expects(atLeastOnce()).method("isItemInStock").with(NOT_NULL).will(returnValue(true)); Item item = new Item(); item.setItemId("AnID"); catalogServiceMock.expects(atLeastOnce()).method("getItem").with(NOT_NULL).will(returnValue(item)); CartBean bean = new CartBean((CatalogService) catalogServiceMock.proxy()); bean.setWorkingItemId("AnID"); bean.addItemToCart(); assertEquals(AbstractBean.SUCCESS, bean.removeItemFromCart()); } public void testShouldUpdateCartQuantities() { Mock catalogServiceMock = mock(CatalogService.class); catalogServiceMock.expects(atLeastOnce()).method("isItemInStock").with(NOT_NULL).will(returnValue(true)); Item item = new Item(); item.setItemId("AnID"); catalogServiceMock.expects(atLeastOnce()).method("getItem").with(NOT_NULL).will(returnValue(item)); CartBean bean = new CartBean((CatalogService) catalogServiceMock.proxy()); bean.setWorkingItemId("AnID"); bean.addItemToCart(); ActionContext.getActionContext().getParameterMap().put("AnID", "5"); assertEquals(AbstractBean.SUCCESS, bean.updateCartQuantities()); CartItem cartItem = (CartItem) bean.getCart().getCartItemList().get(0); assertEquals(5, cartItem.getQuantity()); } }