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.DinnerTable; import fr.mch.mdo.restaurant.dao.beans.TableBill; import fr.mch.mdo.restaurant.dao.hibernate.DefaultDaoServicesTestCase; import fr.mch.mdo.restaurant.dao.tables.ITableBillsDao; import fr.mch.mdo.test.MdoTestCase; public class DefaultTableBillsDaoTest extends DefaultDaoServicesTestCase { /** * Create the test case * * @param testName * name of the test case */ public DefaultTableBillsDaoTest(String testName) { super(testName); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite(DefaultTableBillsDaoTest.class); } protected IDaoServices getInstance() { return DefaultTableBillsDao.getInstance(); } protected IMdoBean createNewBean() { BigDecimal amount = BigDecimal.TEN; DinnerTable dinnerTable = new DinnerTable(); dinnerTable.setId(1L); Integer mealNumber = Integer.MAX_VALUE; Integer order = Integer.MIN_VALUE; Boolean printed = Boolean.FALSE; String reference = "reference"; return createNewBean(amount, dinnerTable, mealNumber, order, printed, reference); } protected List<IMdoBean> createListBeans() { List<IMdoBean> list = new ArrayList<IMdoBean>(); BigDecimal amount = BigDecimal.ONE; DinnerTable dinnerTable = new DinnerTable(); dinnerTable.setId(1L); Integer mealNumber = Integer.MAX_VALUE; Integer order = Integer.MAX_VALUE-1; Boolean printed = Boolean.TRUE; String reference = "reference"; list.add(createNewBean(amount, dinnerTable, mealNumber, order, printed, reference)); return list; } public void testGetInstance() { assertTrue(this.getInstance() instanceof ITableBillsDao); assertTrue(this.getInstance() instanceof DefaultTableBillsDao); } @Override public void doFindByUniqueKey() { try { Long dinnerTableId = 1L; String reference = "reference1"; Integer order = 1; IMdoBean bean = this.getInstance().findByUniqueKey(new Object[] {dinnerTableId, reference, order}); assertTrue("IMdoBean must be instance of " + TableBill.class, bean instanceof TableBill); TableBill castedBean = (TableBill) bean; assertNotNull("TableBill dinner table must not be null", castedBean.getDinnerTable()); assertEquals("Check TableBill dinner table ID", dinnerTableId, castedBean.getDinnerTable().getId()); assertEquals("Check TableBill reference", reference, castedBean.getReference()); assertEquals("Check TableBill order", order, castedBean.getOrder()); } catch (Exception e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } } @Override public void doUpdate() { IMdoBean newBean = null; BigDecimal amount = BigDecimal.ONE; DinnerTable dinnerTable = new DinnerTable(); dinnerTable.setId(1L); Integer mealNumber = Integer.MAX_VALUE; Integer order = Integer.MIN_VALUE; Boolean printed = Boolean.TRUE; String reference = "reference10"; newBean = createNewBean(amount, dinnerTable, mealNumber, order, printed, reference); try { // Create new bean to be updated IMdoBean beanToBeUpdated = this.getInstance().insert(newBean); assertTrue("IMdoBean must be instance of " + TableBill.class, beanToBeUpdated instanceof TableBill); TableBill castedBean = (TableBill) beanToBeUpdated; assertNotNull("TableBill has a not be null ID", castedBean.getId()); assertEquals("Check TableBill order", order, castedBean.getOrder()); assertFalse("TableBill must not be deleted", castedBean.isDeleted()); // Update the created bean castedBean.setDeleted(true); order = Integer.MIN_VALUE+1; castedBean.setOrder(order); this.getInstance().update(castedBean); // Reload the modified bean TableBill updatedBean = new TableBill(); updatedBean.setId(castedBean.getId()); this.getInstance().load(updatedBean); assertEquals("Check TableBill order", order, updatedBean.getOrder()); assertTrue("TableBill 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.ONE; DinnerTable dinnerTable = new DinnerTable(); dinnerTable.setId(1L); Integer mealNumber = Integer.MAX_VALUE; Integer order = Integer.MIN_VALUE; Boolean printed = Boolean.TRUE; String reference = "reference10"; newBean = createNewBean(amount, dinnerTable, mealNumber, order, printed, reference); try { // Create new bean to be updated IMdoBean beanToBeUpdated = this.getInstance().insert(newBean); assertTrue("IMdoBean must be instance of " + TableBill.class, beanToBeUpdated instanceof TableBill); TableBill castedBean = (TableBill) beanToBeUpdated; assertNotNull("TableBill has a not be null ID", castedBean.getId()); assertEquals("Check TableBill order", order, castedBean.getOrder()); assertFalse("TableBill 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); castedBean.setMealNumber(1); castedBean.setOrder(1); castedBean.setPrinted(Boolean.FALSE); castedBean.setReference("reference"); fields.put("amount", castedBean.getAmount()); fields.put("mealNumber", castedBean.getMealNumber()); fields.put("order", castedBean.getOrder()); fields.put("printed", castedBean.getPrinted()); fields.put("reference", castedBean.getReference()); keys.put("id", castedBean.getId()); this.getInstance().updateFieldsByKeys(fields, keys); // Reload the modified bean TableBill updatedBean = (TableBill) createNewBean(); updatedBean.setId(castedBean.getId()); this.getInstance().load(updatedBean); assertEquals("Check updated fields ", castedBean.getAmount(), updatedBean.getAmount()); assertEquals("Check updated fields ", castedBean.getMealNumber(), updatedBean.getMealNumber()); assertEquals("Check updated fields ", castedBean.getOrder(), updatedBean.getOrder()); assertEquals("Check updated fields ", castedBean.getPrinted(), updatedBean.getPrinted()); assertEquals("Check updated fields ", castedBean.getReference(), updatedBean.getReference()); // 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, DinnerTable dinnerTable, Integer mealNumber, Integer order, Boolean printed, String reference) { TableBill newBean = new TableBill(); newBean.setAmount(amount); newBean.setDinnerTable(dinnerTable); newBean.setMealNumber(mealNumber); newBean.setOrder(order); newBean.setPrinted(printed); newBean.setReference(reference); return newBean; } }