package com.ibatis.jpetstore.presentation; import org.jmock.Mock; import org.jmock.cglib.MockObjectTestCase; import com.ibatis.common.util.PaginatedArrayList; import com.ibatis.common.util.PaginatedList; import com.ibatis.jpetstore.domain.Category; import com.ibatis.jpetstore.domain.Item; import com.ibatis.jpetstore.domain.Product; import com.ibatis.jpetstore.service.CatalogService; public class CatalogBeanTest extends MockObjectTestCase { public void testShouldPopulateCategoryByIdForViewing() { Mock catalogServiceMock = mock(CatalogService.class); catalogServiceMock.expects(once()).method("getCategory").with(NOT_NULL).will(returnValue(new Category())); catalogServiceMock.expects(once()).method("getProductListByCategory").with(NOT_NULL) .will(returnValue(new PaginatedArrayList(4))); CatalogBean bean = new CatalogBean((CatalogService) catalogServiceMock.proxy()); bean.setCategoryId("DOGS"); assertEquals(AbstractBean.SUCCESS, bean.viewCategory()); assertNotNull(bean.getCategory()); assertNotNull(bean.getProductList()); } public void testShouldPopulateProductByIdForViewing() { Mock catalogServiceMock = mock(CatalogService.class); catalogServiceMock.expects(once()).method("getProduct").with(NOT_NULL).will(returnValue(new Product())); catalogServiceMock.expects(once()).method("getItemListByProduct").with(NOT_NULL) .will(returnValue(new PaginatedArrayList(4))); CatalogBean bean = new CatalogBean((CatalogService) catalogServiceMock.proxy()); bean.setProductId("EST-1"); assertEquals(AbstractBean.SUCCESS, bean.viewProduct()); assertNotNull(bean.getProduct()); assertNotNull(bean.getItemList()); } public void testShouldPopulateItemByIdForViewing() { Mock catalogServiceMock = mock(CatalogService.class); catalogServiceMock.expects(once()).method("getItem").with(NOT_NULL).will(returnValue(new Item())); CatalogBean bean = new CatalogBean((CatalogService) catalogServiceMock.proxy()); bean.setItemId("FS-SW-1"); assertEquals(AbstractBean.SUCCESS, bean.viewItem()); assertNotNull(bean.getItem()); } public void testShouldFailToSearchProducts() { Mock catalogServiceMock = mock(CatalogService.class); CatalogBean bean = new CatalogBean((CatalogService) catalogServiceMock.proxy()); bean.setKeyword(null); assertEquals(AbstractBean.FAILURE, bean.searchProducts()); assertNull(bean.getProductList()); } public void testShouldSearchProductsByKeyword() { Mock catalogServiceMock = mock(CatalogService.class); catalogServiceMock.expects(once()).method("searchProductList").with(NOT_NULL) .will(returnValue(new PaginatedArrayList(4))); CatalogBean bean = new CatalogBean((CatalogService) catalogServiceMock.proxy()); bean.setKeyword("dog"); assertEquals(AbstractBean.SUCCESS, bean.searchProducts()); assertNotNull(bean.getProductList()); } public void testShouldSwitchProductPageBackAndForth() { Mock catalogServiceMock = mock(CatalogService.class); CatalogBean bean = new CatalogBean((CatalogService) catalogServiceMock.proxy()); PaginatedList productList = new PaginatedArrayList(2); productList.add(new Product()); productList.add(new Product()); productList.add(new Product()); productList.add(new Product()); productList.add(new Product()); bean.setProductList(productList); bean.setPageDirection("next"); bean.switchProductListPage(); assertEquals(1, productList.getPageIndex()); bean.setPageDirection("previous"); bean.switchProductListPage(); assertEquals(0, productList.getPageIndex()); } public void testShouldSwitchItemPageBackAndForth() { Mock catalogServiceMock = mock(CatalogService.class); CatalogBean bean = new CatalogBean((CatalogService) catalogServiceMock.proxy()); PaginatedList itemList = new PaginatedArrayList(2); itemList.add(new Item()); itemList.add(new Item()); itemList.add(new Item()); itemList.add(new Item()); itemList.add(new Item()); bean.setItemList(itemList); bean.setPageDirection("next"); assertEquals(AbstractBean.SUCCESS, bean.switchItemListPage()); assertEquals(1, itemList.getPageIndex()); bean.setPageDirection("previous"); assertEquals(AbstractBean.SUCCESS, bean.switchItemListPage()); assertEquals(0, itemList.getPageIndex()); } public void testShouldClearCatalogBean() { Mock catalogServiceMock = mock(CatalogService.class); CatalogBean bean = new CatalogBean((CatalogService) catalogServiceMock.proxy()); bean.setKeyword("not null"); bean.setPageDirection("not null"); bean.setCategoryId("not null"); bean.setProductId("not null"); bean.setItemId("not null"); bean.setCategory(new Category()); bean.setProduct(new Product()); bean.setItem(new Item()); bean.setCategoryList(new PaginatedArrayList(2)); bean.setProductList(new PaginatedArrayList(2)); bean.setItemList(new PaginatedArrayList(2)); bean.clear(); assertNull(bean.getKeyword()); assertNull(bean.getPageDirection()); assertNull(bean.getCategoryId()); assertNull(bean.getCategory()); assertNull(bean.getCategoryList()); assertNull(bean.getProductId()); assertNull(bean.getProduct()); assertNull(bean.getProductList()); assertNull(bean.getItemId()); assertNull(bean.getItem()); assertNull(bean.getItemList()); } }