package fr.mch.mdo.restaurant.dao.tables.hibernate;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.Test;
import junit.framework.TestSuite;
import fr.mch.mdo.restaurant.beans.IMdoBean;
import fr.mch.mdo.restaurant.dao.IDaoServices;
import fr.mch.mdo.restaurant.dao.beans.CashingType;
import fr.mch.mdo.restaurant.dao.beans.MdoTableAsEnum;
import fr.mch.mdo.restaurant.dao.beans.TableCashing;
import fr.mch.mdo.restaurant.dao.hibernate.DefaultDaoServicesTestCase;
import fr.mch.mdo.restaurant.dao.tables.ICashingTypesDao;
import fr.mch.mdo.test.MdoTestCase;
public class DefaultCashingTypesDaoTest extends DefaultDaoServicesTestCase
{
/**
* Create the test case
*
* @param testName
* name of the test case
*/
public DefaultCashingTypesDaoTest(String testName) {
super(testName);
}
/**
* @return the suite of tests being tested
*/
public static Test suite() {
return new TestSuite(DefaultCashingTypesDaoTest.class);
}
protected IDaoServices getInstance() {
return DefaultCashingTypesDao.getInstance();
}
protected IMdoBean createNewBean() {
BigDecimal amount = BigDecimal.TEN;
TableCashing tableCashing = new TableCashing();
tableCashing.setId(2L);
MdoTableAsEnum type = new MdoTableAsEnum();
type.setId(36L);
return createNewBean(amount, tableCashing, type);
}
protected List<IMdoBean> createListBeans() {
List<IMdoBean> list = new ArrayList<IMdoBean>();
BigDecimal amount = BigDecimal.TEN;
TableCashing tableCashing = new TableCashing();
tableCashing.setId(2L);
MdoTableAsEnum type = new MdoTableAsEnum();
type.setId(37L);
list.add(createNewBean(amount, tableCashing, type));
return list;
}
public void testGetInstance() {
assertTrue(this.getInstance() instanceof ICashingTypesDao);
assertTrue(this.getInstance() instanceof DefaultCashingTypesDao);
}
@Override
public void doFindByUniqueKey() {
try {
Long tableCashingId = 2L;
String type = "GENERIC_CASH";
IMdoBean bean = this.getInstance().findByUniqueKey(new Object[] {tableCashingId, type});
assertTrue("IMdoBean must be instance of " + CashingType.class, bean instanceof CashingType);
CashingType castedBean = (CashingType) bean;
assertNotNull("TableCashing dinner table must not be null", castedBean.getTableCashing());
assertEquals("Check TableCashing dinner table ID", tableCashingId, castedBean.getTableCashing().getId());
assertEquals("Check TableCashing type", type, castedBean.getType().getName());
} catch (Exception e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage());
}
}
@Override
public void doUpdate() {
IMdoBean newBean = null;
BigDecimal amount = BigDecimal.TEN;
TableCashing tableCashing = new TableCashing();
tableCashing.setId(2L);
MdoTableAsEnum type = new MdoTableAsEnum();
type.setId(38L);
newBean = createNewBean(amount, tableCashing, type);
try {
// Create new bean to be updated
IMdoBean beanToBeUpdated = this.getInstance().insert(newBean);
assertTrue("IMdoBean must be instance of " + CashingType.class, beanToBeUpdated instanceof CashingType);
CashingType castedBean = (CashingType) beanToBeUpdated;
assertNotNull("CashingType has a not be null ID", castedBean.getId());
assertEquals("Check CashingType type", type.getId(), castedBean.getType().getId());
assertFalse("CashingType must not be deleted", castedBean.isDeleted());
// Update the created bean
amount = new BigDecimal("125");
castedBean.setAmount(amount);
castedBean.setDeleted(true);
this.getInstance().update(castedBean);
// Reload the modified bean
CashingType updatedBean = new CashingType();
updatedBean.setId(castedBean.getId());
this.getInstance().load(updatedBean);
assertEquals("Check CashingType ammount", amount, updatedBean.getAmount());
assertTrue("CashingType must be deleted", updatedBean.isDeleted());
this.getInstance().delete(updatedBean);
} catch (Exception e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage());
}
}
@Override
public void doUpdateFieldsAndDeleteByKeysSpecific() {
IMdoBean newBean = null;
BigDecimal amount = BigDecimal.TEN;
TableCashing tableCashing = new TableCashing();
tableCashing.setId(2L);
MdoTableAsEnum type = new MdoTableAsEnum();
type.setId(38L);
newBean = createNewBean(amount, tableCashing, type);
try {
// Create new bean to be updated
IMdoBean beanToBeUpdated = this.getInstance().insert(newBean);
assertTrue("IMdoBean must be instance of " + CashingType.class, beanToBeUpdated instanceof CashingType);
CashingType castedBean = (CashingType) beanToBeUpdated;
assertNotNull("CashingType has a not be null ID", castedBean.getId());
assertEquals("Check CashingType type", type.getId(), castedBean.getType().getId());
assertFalse("CashingType must not be deleted", castedBean.isDeleted());
// Update the created bean
Map<String, Object> fields = new HashMap<String, Object>();
Map<String, Object> keys = new HashMap<String, Object>();
castedBean.setAmount(BigDecimal.ONE);
fields.put("amount", castedBean.getAmount());
keys.put("id", castedBean.getId());
this.getInstance().updateFieldsByKeys(fields, keys);
// Reload the modified bean
CashingType updatedBean = (CashingType) createNewBean();
updatedBean.setId(castedBean.getId());
this.getInstance().load(updatedBean);
assertEquals("Check updated fields ", castedBean.getAmount(), updatedBean.getAmount());
// Delete the bean by keys
// Take the fields as keys
super.doDeleteByKeysSpecific(updatedBean, fields);
} catch (Exception e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + " " + e.getMessage());
}
}
private IMdoBean createNewBean(BigDecimal amount, TableCashing tableCashing, MdoTableAsEnum type) {
CashingType newBean = new CashingType();
newBean.setAmount(amount);
newBean.setTableCashing(tableCashing);
newBean.setType(type);
return newBean;
}
}