package com.ibatis.jpetstore.presentation;
import java.util.List;
import org.jmock.Mock;
import org.jmock.cglib.MockObjectTestCase;
import com.ibatis.common.util.PaginatedArrayList;
import com.ibatis.jpetstore.domain.Account;
import com.ibatis.jpetstore.domain.DomainFixture;
import com.ibatis.jpetstore.service.AccountService;
import com.ibatis.jpetstore.service.CatalogService;
public class AccountBeanTest extends MockObjectTestCase {
public void testShouldSuccessfullyCallServicesToCreateNewAccount() {
Account account = DomainFixture.newTestAccount();
Mock accountServiceMock = mock(AccountService.class);
accountServiceMock.expects(once()).method("insertAccount").with(NOT_NULL);
accountServiceMock.expects(once()).method("getAccount").with(NOT_NULL).will(returnValue(account));
Mock catalogServiceMock = mock(CatalogService.class);
catalogServiceMock.expects(once()).method("getProductListByCategory").with(NOT_NULL)
.will(returnValue(new PaginatedArrayList(5)));
AccountBean accountBean = new AccountBean((AccountService) accountServiceMock.proxy(),
(CatalogService) catalogServiceMock.proxy());
accountBean.setAccount(account);
String result = accountBean.newAccount();
assertEquals(AbstractBean.SUCCESS, result);
}
public void testShouldSuccessfullyCallServicesToUpdateExistingAccount() {
Account account = DomainFixture.newTestAccount();
Mock accountServiceMock = mock(AccountService.class);
accountServiceMock.expects(once()).method("updateAccount").with(NOT_NULL);
accountServiceMock.expects(once()).method("getAccount").with(NOT_NULL).will(returnValue(account));
Mock catalogServiceMock = mock(CatalogService.class);
catalogServiceMock.expects(once()).method("getProductListByCategory").with(NOT_NULL)
.will(returnValue(new PaginatedArrayList(5)));
AccountBean accountBean = new AccountBean((AccountService) accountServiceMock.proxy(),
(CatalogService) catalogServiceMock.proxy());
accountBean.setAccount(account);
String result = accountBean.editAccount();
assertEquals(AbstractBean.SUCCESS, result);
}
public void testShouldCallEditAccountFormReturningSuccess() {
Account account = DomainFixture.newTestAccount();
Mock accountServiceMock = mock(AccountService.class);
accountServiceMock.expects(once()).method("getAccount").with(NOT_NULL).will(returnValue(account));
Mock catalogServiceMock = mock(CatalogService.class);
AccountBean accountBean = new AccountBean((AccountService) accountServiceMock.proxy(),
(CatalogService) catalogServiceMock.proxy());
accountBean.setAccount(account);
assertEquals(AbstractBean.SUCCESS, accountBean.editAccountForm());
}
public void testShouldSwitchPageDirection() {
Account account = DomainFixture.newTestAccount();
Mock accountServiceMock = mock(AccountService.class);
Mock catalogServiceMock = mock(CatalogService.class);
AccountBean accountBean = new AccountBean((AccountService) accountServiceMock.proxy(),
(CatalogService) catalogServiceMock.proxy());
accountBean.setAccount(account);
accountBean.setMyList(new PaginatedArrayList(5));
accountBean.setPageDirection("next");
assertEquals(AbstractBean.SUCCESS, accountBean.switchMyListPage());
accountBean.setPageDirection("previous");
assertEquals(AbstractBean.SUCCESS, accountBean.switchMyListPage());
}
public void testShouldSignoffAccount() {
Account account = DomainFixture.newTestAccount();
Mock accountServiceMock = mock(AccountService.class);
accountServiceMock.expects(once()).method("getAccount").with(NOT_NULL, NOT_NULL).will(returnValue(account));
Mock catalogServiceMock = mock(CatalogService.class);
catalogServiceMock.expects(once()).method("getProductListByCategory").with(NOT_NULL)
.will(returnValue(new PaginatedArrayList(5)));
AccountBean accountBean = new AccountBean((AccountService) accountServiceMock.proxy(),
(CatalogService) catalogServiceMock.proxy());
accountBean.setAccount(account);
accountBean.signon();
assertEquals(AbstractBean.SUCCESS, accountBean.signoff());
assertFalse(accountBean.isAuthenticated());
}
public void testShouldSignonAccount() {
Account account = DomainFixture.newTestAccount();
Mock accountServiceMock = mock(AccountService.class);
accountServiceMock.expects(once()).method("getAccount").with(NOT_NULL, NOT_NULL).will(returnValue(account));
Mock catalogServiceMock = mock(CatalogService.class);
catalogServiceMock.expects(once()).method("getProductListByCategory").with(NOT_NULL)
.will(returnValue(new PaginatedArrayList(5)));
AccountBean accountBean = new AccountBean((AccountService) accountServiceMock.proxy(),
(CatalogService) catalogServiceMock.proxy());
accountBean.setAccount(account);
assertEquals(AbstractBean.SUCCESS, accountBean.signon());
assertTrue(accountBean.isAuthenticated());
}
public void testShouldFailToSignonAccount() {
Account account = DomainFixture.newTestAccount();
Mock accountServiceMock = mock(AccountService.class);
accountServiceMock.expects(once()).method("getAccount").with(NULL, NULL).will(returnValue(null));
Mock catalogServiceMock = mock(CatalogService.class);
AccountBean accountBean = new AccountBean((AccountService) accountServiceMock.proxy(),
(CatalogService) catalogServiceMock.proxy());
assertEquals(AbstractBean.FAILURE, accountBean.signon());
assertFalse(accountBean.isAuthenticated());
}
public void testShouldGetCategories() {
AccountBean bean = new AccountBean();
List categories = bean.getCategories();
assertTrue(categories.contains("DOGS"));
assertTrue(categories.contains("CATS"));
assertTrue(categories.contains("BIRDS"));
assertTrue(categories.contains("REPTILES"));
assertTrue(categories.contains("FISH"));
}
public void testShouldGetLanguages() {
AccountBean bean = new AccountBean();
List langs = bean.getLanguages();
assertTrue(langs.contains("english"));
assertTrue(langs.contains("japanese"));
}
public void testShouldResetBooleanOptions() {
AccountBean bean = new AccountBean();
bean.setAccount(DomainFixture.newTestAccount());
bean.getAccount().setBannerOption(true);
bean.getAccount().setListOption(true);
bean.reset();
assertFalse(bean.getAccount().isBannerOption());
assertFalse(bean.getAccount().isListOption());
}
public void testShouldClearAccountBean() {
Mock accountServiceMock = mock(AccountService.class);
Mock catalogServiceMock = mock(CatalogService.class);
AccountBean accountBean = new AccountBean((AccountService) accountServiceMock.proxy(),
(CatalogService) catalogServiceMock.proxy());
accountBean.setAccount(DomainFixture.newTestAccount());
accountBean.setRepeatedPassword("something");
accountBean.setPageDirection("F");
accountBean.setMyList(new PaginatedArrayList(5));
accountBean.clear();
assertEquals(null, accountBean.getAccount().getFirstName());
assertEquals(null, accountBean.getRepeatedPassword());
assertEquals(null, accountBean.getPageDirection());
assertEquals(null, accountBean.getMyList());
}
}