package fr.mch.mdo.restaurant.dao.restaurants.hibernate;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import junit.framework.Test;
import junit.framework.TestSuite;
import fr.mch.mdo.restaurant.beans.IMdoBean;
import fr.mch.mdo.restaurant.dao.DaoServicesFactory;
import fr.mch.mdo.restaurant.dao.IDaoServices;
import fr.mch.mdo.restaurant.dao.beans.MdoTableAsEnum;
import fr.mch.mdo.restaurant.dao.beans.Restaurant;
import fr.mch.mdo.restaurant.dao.beans.RestaurantPrefixTable;
import fr.mch.mdo.restaurant.dao.beans.RestaurantReductionTable;
import fr.mch.mdo.restaurant.dao.beans.RestaurantValueAddedTax;
import fr.mch.mdo.restaurant.dao.beans.RestaurantVatTableType;
import fr.mch.mdo.restaurant.dao.beans.TableType;
import fr.mch.mdo.restaurant.dao.beans.ValueAddedTax;
import fr.mch.mdo.restaurant.dao.hibernate.DefaultDaoServicesTestCase;
import fr.mch.mdo.restaurant.dao.restaurants.IRestaurantsDao;
import fr.mch.mdo.restaurant.exception.MdoException;
import fr.mch.mdo.test.MdoTestCase;
public class DefaultRestaurantsDaoTest extends DefaultDaoServicesTestCase
{
private static long basicRestaurantReference = Long.valueOf(DefaultDaoServicesTestCase.RESTAURANT_FIRST_REFERENCE);
/**
* Create the test case
*
* @param testName
* name of the test case
*/
public DefaultRestaurantsDaoTest(String testName) {
super(testName);
}
/**
* @return the suite of tests being tested
*/
public static Test suite() {
return new TestSuite(DefaultRestaurantsDaoTest.class);
}
@Override
protected IDaoServices getInstance() {
return DefaultRestaurantsDao.getInstance();
}
public void testGetInstance() {
assertTrue(this.getInstance() instanceof IRestaurantsDao);
assertTrue(this.getInstance() instanceof DefaultRestaurantsDao);
}
@Override
protected IMdoBean createNewBean() {
Date registrationDate = Calendar.getInstance().getTime();
String reference = Long.toString(++basicRestaurantReference);
String name = "Kim-San 95";
String addressRoad = "3 place de la Piscine";
String addressZip = "95 334";
String addressCity = "Pontoise";
String phone = "0130321200";
String vatRef = "1234567890";
String visaRef = "A1Z2E3R4T5Y6";
String tripleDESKey = "1A2B3C4D5E6F";
boolean vatByTakeaway = true;
MdoTableAsEnum specificRound = new MdoTableAsEnum();
specificRound.setId(2L);
TableType defaultTableType = new TableType();
defaultTableType.setId(1L);
Set<RestaurantPrefixTable> prefixTableNames = new HashSet<RestaurantPrefixTable>();
Set<RestaurantReductionTable> reductionTables = new HashSet<RestaurantReductionTable>();
Set<RestaurantVatTableType> vatTableTypes = new HashSet<RestaurantVatTableType>();
Set<RestaurantValueAddedTax> vats = null;
ValueAddedTax orderLineDefaultVat = new ValueAddedTax();
orderLineDefaultVat.setId(1L);
Restaurant restaurant = (Restaurant) createNewBean(registrationDate, reference, name, addressRoad, addressZip, addressCity, phone, vatRef, visaRef, tripleDESKey,
vatByTakeaway, specificRound, defaultTableType, prefixTableNames, reductionTables, vats, vatTableTypes, orderLineDefaultVat);
RestaurantPrefixTable restaurantPrefixTable = new RestaurantPrefixTable();
MdoTableAsEnum prefix = new MdoTableAsEnum();
// Use the existing data in database
try {
prefix = (MdoTableAsEnum) DaoServicesFactory.getMdoTableAsEnumsDao().findByPrimaryKey(1L);
} catch (MdoException e) {
fail("Could not found the prefix.");
}
restaurantPrefixTable.setPrefix(prefix);
TableType type = new TableType();
// Use the existing data in database
try {
type = (TableType) DaoServicesFactory.getTableTypesDao().findByPrimaryKey(1L);
} catch (MdoException e) {
fail("Could not found the type.");
}
restaurantPrefixTable.setType(type);
restaurant.addPrefixTableName(restaurantPrefixTable);
RestaurantReductionTable restaurantReductionTable = new RestaurantReductionTable();
restaurantReductionTable.setType(type);
restaurantReductionTable.setMinAmount(BigDecimal.TEN);
restaurantReductionTable.setValue(BigDecimal.TEN);
restaurant.addReductionTable(restaurantReductionTable);
RestaurantVatTableType restaurantVatTableType = new RestaurantVatTableType();
restaurantVatTableType.setType(type);
ValueAddedTax vat = new ValueAddedTax();
vat.setId(1L);
restaurantVatTableType.setVat(vat);
restaurant.addVatTableType(restaurantVatTableType);
return restaurant;
}
@Override
protected List<IMdoBean> createListBeans() {
List<IMdoBean> list = new ArrayList<IMdoBean>();
// First bean in list
IMdoBean newBean = null;
Date registrationDate = Calendar.getInstance().getTime();
String reference = Long.toString(++basicRestaurantReference);
String name = "Kim-San 95";
String addressRoad = "3 place de la Piscine";
String addressZip = "95 334";
String addressCity = "Pontoise";
String phone = "0130321200";
String vatRef = "1234567890";
String visaRef = "A1Z2E3R4T5Y6";
String tripleDESKey = "1A2B3C4D5E6F";
boolean vatByTakeaway = true;
MdoTableAsEnum specificRound = new MdoTableAsEnum();
specificRound.setId(3L);
TableType defaultTableType = new TableType();
defaultTableType.setId(2L);
Set<RestaurantPrefixTable> prefixTableNames = new HashSet<RestaurantPrefixTable>();
Set<RestaurantReductionTable> reductionTables = new HashSet<RestaurantReductionTable>();
Set<RestaurantValueAddedTax> vats = new HashSet<RestaurantValueAddedTax>();
Set<RestaurantVatTableType> vatTableTypes = new HashSet<RestaurantVatTableType>();
ValueAddedTax orderLineDefaultVat = new ValueAddedTax();
orderLineDefaultVat.setId(1L);
newBean = createNewBean(registrationDate, reference, name, addressRoad, addressZip, addressCity, phone, vatRef, visaRef, tripleDESKey, vatByTakeaway,
specificRound, defaultTableType, prefixTableNames, reductionTables, vats, vatTableTypes, orderLineDefaultVat);
RestaurantPrefixTable restaurantPrefixTable = new RestaurantPrefixTable();
MdoTableAsEnum prefix = new MdoTableAsEnum();
// Use the existing data in database
try {
prefix = (MdoTableAsEnum) DaoServicesFactory.getMdoTableAsEnumsDao().findByPrimaryKey(1L);
} catch (MdoException e) {
fail("Could not found the prefix.");
}
restaurantPrefixTable.setPrefix(prefix);
TableType type = new TableType();
// Use the existing data in database
try {
type = (TableType) DaoServicesFactory.getTableTypesDao().findByPrimaryKey(1L);
} catch (MdoException e) {
fail("Could not found the type.");
}
restaurantPrefixTable.setType(type);
((Restaurant) newBean).addPrefixTableName(restaurantPrefixTable);
RestaurantReductionTable restaurantReductionTable = new RestaurantReductionTable();
restaurantReductionTable.setType(type);
restaurantReductionTable.setMinAmount(BigDecimal.TEN);
restaurantReductionTable.setValue(BigDecimal.TEN);
((Restaurant) newBean).addReductionTable(restaurantReductionTable);
RestaurantVatTableType restaurantVatTableType = new RestaurantVatTableType();
restaurantVatTableType.setType(type);
ValueAddedTax vat = new ValueAddedTax();
vat.setId(2L);
restaurantVatTableType.setVat(vat);
((Restaurant) newBean).addVatTableType(restaurantVatTableType);
RestaurantValueAddedTax restaurantVat = new RestaurantValueAddedTax();
ValueAddedTax valueAddedTax = new ValueAddedTax();
valueAddedTax.setId(1L);
restaurantVat.setVat(valueAddedTax);
((Restaurant) newBean).addVat(restaurantVat);
list.add(newBean);
// Second bean in list
registrationDate = Calendar.getInstance().getTime();
reference = Long.toString(++basicRestaurantReference);
name = "Fokuda";
addressRoad = "2 rue de Paris";
addressZip = "75 005";
addressCity = "Paris";
phone = "0130321200";
vatRef = "1234567890";
visaRef = "A1Z2E3R4T5Y6";
tripleDESKey = "1A2B3C4D5E6F";
vatByTakeaway = true;
prefixTableNames = new HashSet<RestaurantPrefixTable>();
reductionTables = new HashSet<RestaurantReductionTable>();
// Use the existing data in database
try {
specificRound = (MdoTableAsEnum) DaoServicesFactory.getMdoTableAsEnumsDao().findByPrimaryKey(new Long(2));
} catch (MdoException e) {
fail("Could not found the Specific Round.");
}
defaultTableType = new TableType();
defaultTableType.setId(1L);
vats = new HashSet<RestaurantValueAddedTax>();
vatTableTypes = new HashSet<RestaurantVatTableType>();
orderLineDefaultVat = new ValueAddedTax();
orderLineDefaultVat.setId(2L);
newBean = createNewBean(registrationDate, reference, name, addressRoad, addressZip, addressCity, phone, vatRef, visaRef, tripleDESKey, vatByTakeaway,
specificRound, defaultTableType, prefixTableNames, reductionTables, vats, vatTableTypes, orderLineDefaultVat);
restaurantPrefixTable = new RestaurantPrefixTable();
// Use the existing data in database
prefix = new MdoTableAsEnum();
// Use the existing data in database
try {
prefix = (MdoTableAsEnum) DaoServicesFactory.getMdoTableAsEnumsDao().findByPrimaryKey(1L);
} catch (MdoException e) {
fail("Could not found the prefix.");
}
restaurantPrefixTable.setPrefix(prefix);
type = new TableType();
// Use the existing data in database
try {
type = (TableType) DaoServicesFactory.getTableTypesDao().findByPrimaryKey(1L);
} catch (MdoException e) {
fail("Could not found the type.");
}
restaurantPrefixTable.setType(type);
((Restaurant) newBean).addPrefixTableName(restaurantPrefixTable);
restaurantReductionTable = new RestaurantReductionTable();
restaurantReductionTable.setType(type);
restaurantReductionTable.setMinAmount(BigDecimal.TEN.add(BigDecimal.ONE));
restaurantReductionTable.setValue(BigDecimal.TEN.multiply(BigDecimal.TEN));
((Restaurant) newBean).addReductionTable(restaurantReductionTable);
restaurantVatTableType = new RestaurantVatTableType();
restaurantVatTableType.setType(type);
vat = new ValueAddedTax();
vat.setId(2L);
restaurantVatTableType.setVat(vat);
((Restaurant) newBean).addVatTableType(restaurantVatTableType);
restaurantVat = new RestaurantValueAddedTax();
valueAddedTax = new ValueAddedTax();
valueAddedTax.setId(2L);
restaurantVat.setVat(valueAddedTax);
((Restaurant) newBean).addVat(restaurantVat);
list.add(newBean);
return list;
}
@Override
public void doFindByUniqueKey() {
// DefaultDaoServicesTestCase.RESTAURANT_FIRST_REFERENCE was created at
// HSQLDB startup
try {
IMdoBean bean = this.getInstance().findByUniqueKey(DefaultDaoServicesTestCase.RESTAURANT_FIRST_REFERENCE);
assertNotNull("Restaurant must not be null", bean);
assertTrue("IMdoBean must be instance of " + Restaurant.class, bean instanceof Restaurant);
Restaurant castedBean = (Restaurant) bean;
assertNotNull("Restaurant Reference must not be null", castedBean.getReference());
assertEquals("Restaurant Reference must be equals to unique key", DefaultDaoServicesTestCase.RESTAURANT_FIRST_REFERENCE, castedBean.getReference());
assertFalse("Restaurant must not be deleted", castedBean.isDeleted());
IRestaurantsDao restaurantDao = (IRestaurantsDao) this.getInstance();
bean = restaurantDao.findByReference(DefaultDaoServicesTestCase.RESTAURANT_FIRST_REFERENCE);
assertNotNull("Restaurant must not be null", bean);
assertTrue("IMdoBean must be instance of " + Restaurant.class, bean instanceof Restaurant);
castedBean = (Restaurant) bean;
assertNotNull("Restaurant Reference must not be null", castedBean.getReference());
assertEquals("Restaurant Reference must be equals to unique key", DefaultDaoServicesTestCase.RESTAURANT_FIRST_REFERENCE, castedBean.getReference());
assertFalse("Restaurant must not be deleted", castedBean.isDeleted());
} catch (Exception e) {
fail(e.getMessage());
}
}
@Override
public void doUpdate() {
IMdoBean newBean = null;
Date registrationDate = Calendar.getInstance().getTime();
String reference = Long.toString(++basicRestaurantReference);
String name = "Kim-San 78";
String addressRoad = "3 place de la Piscine";
String addressZip = "95 334";
String addressCity = "Versaille";
String phone = "0130321200";
String vatRef = "1234567890";
String visaRef = "A1Z2E3R4T5Y6";
String tripleDESKey = "1A2B3C4D5E6F";
boolean vatByTakeaway = true;
// Use the existing data in database
HashSet<RestaurantPrefixTable> prefixTableNames = new HashSet<RestaurantPrefixTable>();
Set<RestaurantReductionTable> reductionTables = new HashSet<RestaurantReductionTable>();
Set<RestaurantVatTableType> vatTableTypes = new HashSet<RestaurantVatTableType>();
// Use the existing data in database
MdoTableAsEnum specificRound = new MdoTableAsEnum();
try {
specificRound = (MdoTableAsEnum) DaoServicesFactory.getMdoTableAsEnumsDao().findByPrimaryKey(new Long(2));
} catch (MdoException e) {
fail("Could not found the Specific Round.");
}
TableType defaultTableType = new TableType();
defaultTableType.setId(2L);
Set<RestaurantValueAddedTax> vats = new HashSet<RestaurantValueAddedTax>();
ValueAddedTax orderLineDefaultVat = new ValueAddedTax();
orderLineDefaultVat.setId(1L);
newBean = createNewBean(registrationDate, reference, name, addressRoad, addressZip, addressCity, phone, vatRef, visaRef, tripleDESKey, vatByTakeaway,
specificRound, defaultTableType, prefixTableNames, reductionTables, vats, vatTableTypes, orderLineDefaultVat);
RestaurantPrefixTable restaurantPrefixTable = new RestaurantPrefixTable();
// Use the existing data in database
MdoTableAsEnum prefix = new MdoTableAsEnum();
try {
prefix = (MdoTableAsEnum) DaoServicesFactory.getMdoTableAsEnumsDao().findByPrimaryKey(2L);
} catch (MdoException e) {
fail("Could not found the prefix.");
}
restaurantPrefixTable.setPrefix(prefix);
TableType type = new TableType();
// Use the existing data in database
try {
type = (TableType) DaoServicesFactory.getTableTypesDao().findByPrimaryKey(2L);
} catch (MdoException e) {
fail("Could not found the type.");
}
restaurantPrefixTable.setType(type);
((Restaurant) newBean).addPrefixTableName(restaurantPrefixTable);
RestaurantReductionTable restaurantReductionTable = new RestaurantReductionTable();
restaurantReductionTable.setType(type);
restaurantReductionTable.setMinAmount(BigDecimal.TEN.add(BigDecimal.ONE));
restaurantReductionTable.setValue(BigDecimal.TEN.multiply(BigDecimal.TEN));
((Restaurant) newBean).addReductionTable(restaurantReductionTable);
RestaurantVatTableType restaurantVatTableType = new RestaurantVatTableType();
restaurantVatTableType.setType(type);
ValueAddedTax vat = new ValueAddedTax();
vat.setId(1L);
restaurantVatTableType.setVat(vat);
((Restaurant) newBean).addVatTableType(restaurantVatTableType);
RestaurantValueAddedTax restaurantVat = new RestaurantValueAddedTax();
ValueAddedTax valueAddedTax = new ValueAddedTax();
valueAddedTax.setId(1L);
restaurantVat.setVat(valueAddedTax);
((Restaurant) newBean).addVat(restaurantVat);
restaurantVat = new RestaurantValueAddedTax();
valueAddedTax = new ValueAddedTax();
valueAddedTax.setId(2L);
restaurantVat.setVat(valueAddedTax);
((Restaurant) newBean).addVat(restaurantVat);
try {
// Create new bean to be updated
IMdoBean beanToBeUpdated = this.getInstance().insert(newBean);
assertTrue("IMdoBean must be instance of " + Restaurant.class, beanToBeUpdated instanceof Restaurant);
Restaurant castedBean = (Restaurant) beanToBeUpdated;
assertNotNull("Restaurant name must not be null", castedBean.getName());
assertEquals("Restaurant name must be equals to the inserted value", name, castedBean.getName());
assertNotNull("Restaurant prefixeTakeawayNames must not be null", castedBean.getPrefixTableNames());
assertEquals("Check Restaurant prefixeTakeawayNames size", prefixTableNames.size(), castedBean.getPrefixTableNames().size());
assertNotNull("Restaurant vats must not be null", castedBean.getVats());
assertEquals("Check Restaurant vats size", vats.size(), castedBean.getVats().size());
assertNotNull("Restaurant ReductionTables must not be null", castedBean.getReductionTables());
assertEquals("Check Restaurant ReductionTables size", reductionTables.size(), castedBean.getReductionTables().size());
assertNotNull("Restaurant VatTableTypes must not be null", castedBean.getVatTableTypes());
assertEquals("Check Restaurant VatTableTypes size", vatTableTypes.size(), castedBean.getVatTableTypes().size());
assertFalse("Restaurant must not be deleted", castedBean.isDeleted());
// Update the created bean
castedBean.setName("E");
castedBean.getPrefixTableNames().clear();
restaurantPrefixTable = new RestaurantPrefixTable();
// Use the existing data in database
prefix = new MdoTableAsEnum();
prefix.setId(2L);
restaurantPrefixTable.setPrefix(prefix);
type = new TableType();
type.setId(1L);
restaurantPrefixTable.setType(type);
castedBean.addPrefixTableName(restaurantPrefixTable);
castedBean.getVats().clear();
castedBean.addVat(restaurantVat);
castedBean.setDeleted(true);
this.getInstance().update(castedBean);
// Reload the modified bean
Restaurant updatedBean = (Restaurant) createNewBean();
updatedBean.setId(castedBean.getId());
this.getInstance().load(updatedBean);
assertNotNull("Restaurant name must not be null", updatedBean.getName());
assertEquals("Restaurant name must be equals to updated value", castedBean.getName(), updatedBean.getName());
assertTrue("Restaurant prefixeTakeawayNames must not be empty", !updatedBean.getPrefixTableNames().isEmpty());
assertNotNull("Restaurant vats must not be null", updatedBean.getVats());
assertEquals("Check Restaurant vats size", vats.size(), updatedBean.getVats().size());
assertTrue("Restaurant must be deleted", updatedBean.isDeleted());
this.getInstance().delete(updatedBean);
} catch (Exception e) {
fail(e.getMessage());
}
}
@Override
public void doUpdateFieldsAndDeleteByKeysSpecific() {
IMdoBean newBean = null;
Date registrationDate = Calendar.getInstance().getTime();
String reference = Long.toString(++basicRestaurantReference);
String name = "Kim-San 78";
String addressRoad = "3 place de la Piscine";
String addressZip = "95 334";
String addressCity = "Versaille";
String phone = "0130321200";
String vatRef = "1234567890";
String visaRef = "A1Z2E3R4T5Y6";
String tripleDESKey = "1A2B3C4D5E6F";
boolean vatByTakeaway = true;
// Use the existing data in database
HashSet<RestaurantPrefixTable> prefixTableNames = new HashSet<RestaurantPrefixTable>();
Set<RestaurantReductionTable> reductionTables = new HashSet<RestaurantReductionTable>();
// Use the existing data in database
MdoTableAsEnum specificRound = new MdoTableAsEnum();
try {
specificRound = (MdoTableAsEnum) DaoServicesFactory.getMdoTableAsEnumsDao().findByPrimaryKey(new Long(2));
} catch (MdoException e) {
fail("Could not found the Specific Round.");
}
TableType defaultTableType = new TableType();
defaultTableType.setId(2L);
Set<RestaurantValueAddedTax> vats = new HashSet<RestaurantValueAddedTax>();
Set<RestaurantVatTableType> vatTableTypes = new HashSet<RestaurantVatTableType>();
ValueAddedTax orderLineDefaultVat = new ValueAddedTax();
orderLineDefaultVat.setId(1L);
newBean = createNewBean(registrationDate, reference, name, addressRoad, addressZip, addressCity, phone, vatRef, visaRef, tripleDESKey, vatByTakeaway,
specificRound, defaultTableType, prefixTableNames, reductionTables, vats, vatTableTypes, orderLineDefaultVat);
RestaurantPrefixTable restaurantPrefixTable = new RestaurantPrefixTable();
// Use the existing data in database
MdoTableAsEnum prefix = new MdoTableAsEnum();
try {
prefix = (MdoTableAsEnum) DaoServicesFactory.getMdoTableAsEnumsDao().findByPrimaryKey(2L);
} catch (MdoException e) {
fail("Could not found the prefix.");
}
restaurantPrefixTable.setPrefix(prefix);
TableType type = new TableType();
// Use the existing data in database
try {
type = (TableType) DaoServicesFactory.getTableTypesDao().findByPrimaryKey(2L);
} catch (MdoException e) {
fail("Could not found the type.");
}
restaurantPrefixTable.setType(type);
((Restaurant) newBean).addPrefixTableName(restaurantPrefixTable);
RestaurantReductionTable restaurantReductionTable = new RestaurantReductionTable();
restaurantReductionTable.setType(type);
restaurantReductionTable.setMinAmount(BigDecimal.TEN.add(BigDecimal.ONE));
restaurantReductionTable.setValue(BigDecimal.TEN.multiply(BigDecimal.TEN));
((Restaurant) newBean).addReductionTable(restaurantReductionTable);
RestaurantValueAddedTax vat = new RestaurantValueAddedTax();
ValueAddedTax valueAddedTax = new ValueAddedTax();
valueAddedTax.setId(1L);
vat.setVat(valueAddedTax);
((Restaurant) newBean).addVat(vat);
vat = new RestaurantValueAddedTax();
valueAddedTax = new ValueAddedTax();
valueAddedTax.setId(2L);
vat.setVat(valueAddedTax);
((Restaurant) newBean).addVat(vat);
try {
// Create new bean to be updated
IMdoBean beanToBeUpdated = this.getInstance().insert(newBean);
assertTrue("IMdoBean must be instance of " + Restaurant.class, beanToBeUpdated instanceof Restaurant);
Restaurant castedBean = (Restaurant) beanToBeUpdated;
assertNotNull("Restaurant name must not be null", castedBean.getName());
assertEquals("Restaurant name must be equals to the inserted value", name, castedBean.getName());
assertNotNull("Restaurant prefixeTakeawayNames must not be null", castedBean.getPrefixTableNames());
assertEquals("Check Restaurant prefixeTakeawayNames size", prefixTableNames.size(), castedBean.getPrefixTableNames().size());
assertNotNull("Restaurant vats must not be null", castedBean.getVats());
assertEquals("Check Restaurant vats size", vats.size(), castedBean.getVats().size());
assertFalse("Restaurant 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.setAddressCity("addressCity");
castedBean.setAddressRoad("addressRoad");
castedBean.setAddressZip("addressZip");
castedBean.setName("name");
castedBean.setPhone("phone");
castedBean.setReference("reference");
castedBean.setRegistrationDate(new Date());
castedBean.setTripleDESKey("tripleDESKey");
castedBean.setVatRef("vatRef");
castedBean.setVisaRef("visaRef");
fields.put("addressCity", castedBean.getAddressCity());
fields.put("addressRoad", castedBean.getAddressRoad());
fields.put("addressZip", castedBean.getAddressZip());
fields.put("name", castedBean.getName());
fields.put("phone", castedBean.getPhone());
fields.put("reference", castedBean.getReference());
fields.put("registrationDate", castedBean.getRegistrationDate());
fields.put("tripleDESKey", castedBean.getTripleDESKey());
fields.put("vatRef", castedBean.getVatRef());
fields.put("visaRef", castedBean.getVisaRef());
keys.put("id", castedBean.getId());
this.getInstance().updateFieldsByKeys(fields, keys);
// Reload the modified bean
Restaurant updatedBean = (Restaurant) createNewBean();
updatedBean.setId(castedBean.getId());
this.getInstance().load(updatedBean);
assertEquals("Check updated fields ", castedBean.getAddressCity(), updatedBean.getAddressCity());
assertEquals("Check updated fields ", castedBean.getAddressRoad(), updatedBean.getAddressRoad());
assertEquals("Check updated fields ", castedBean.getAddressZip(), updatedBean.getAddressZip());
assertEquals("Check updated fields ", castedBean.getName(), updatedBean.getName());
assertEquals("Check updated fields ", castedBean.getPhone(), updatedBean.getPhone());
assertEquals("Check updated fields ", castedBean.getReference(), updatedBean.getReference());
// assertEquals("Check updated fields ", castedBean.getRegistrationDate(), updatedBean.getRegistrationDate());
assertEquals("Check updated fields ", castedBean.getTripleDESKey(), updatedBean.getTripleDESKey());
assertEquals("Check updated fields ", castedBean.getVatRef(), updatedBean.getVatRef());
assertEquals("Check updated fields ", castedBean.getVisaRef(), updatedBean.getVisaRef());
// Delete the bean by keys
// Take the fields as keys
try {
super.doDeleteByKeysSpecific(updatedBean, keys, true);
} catch (Exception e) {
// We Have to delete following tables in the following order deleting the table t_restaurant.
// 1) t_user_restaurant
// 2) t_restaurant_vat
// 3) t_restaurant_prefix_table
// 4) t_restaurant_reduction_table
// 5) t_user_authentication-->t_dinner_table, t_user_locale
// 6) t_printing_information-->t_printing_information_language
// 7) t_revenue-->t_revenue_vat, t_revenue_cashing
// 8) t_product-->t_product_category, t_product_language, t_order_line, t_product_sold
// 9) t_product_special_code-->t_product_special_code_language, t_order_line,
// 10) t_dinner_table-->t_table_credit, t_table_bill, t_table_vat, t_order_line, t_table_cashing, t_cashing_type
// 11) t_credit-->t_order_line
Object parentId = keys.get("id");
Map<String, Object> childrenKeys = new HashMap<String, Object>();
childrenKeys.put("restaurant.id", parentId);
super.doDeleteByKeysSpecific(RestaurantPrefixTable.class, childrenKeys);
super.doDeleteByKeysSpecific(RestaurantReductionTable.class, childrenKeys);
super.doDeleteByKeysSpecific(RestaurantValueAddedTax.class, childrenKeys);
super.doDeleteByKeysSpecific(RestaurantVatTableType.class, childrenKeys);
super.doDeleteByKeysSpecific(updatedBean, keys);
}
} catch (Exception e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + " " + e.getMessage());
}
}
public void testFindRestaurantsByUser() {
IRestaurantsDao dao = (IRestaurantsDao) this.getInstance();
// Test with data from database
List<IMdoBean> list;
try {
list = dao.findRestaurants(1L);
assertNotNull("UserRestaurants list not be null", list);
assertFalse("UserRestaurants list must not be empty", list.isEmpty());
} catch (MdoException e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage());
}
}
public void testUpdateNotModifiedProductSpecialCodesList() {
try {
Restaurant restaurant = (Restaurant) this.getInstance().findByPrimaryKey(super.primaryKey);
assertNotNull("Restaurant not null", restaurant);
assertNotNull("List of Product Special Code not null", restaurant.getProductSpecialCodes());
assertFalse("List of Product Special Code not empty", restaurant.getProductSpecialCodes().isEmpty());
String backupedName = restaurant.getName();
String newName = "restaurant.getName()";
restaurant.setName(newName);
this.getInstance().update(restaurant);
restaurant = (Restaurant) this.getInstance().findByPrimaryKey(super.primaryKey);
assertNotNull("Restaurant not null", restaurant);
assertNotNull("List of Product Special Code not null", restaurant.getProductSpecialCodes());
assertFalse("List of Product Special Code not empty", restaurant.getProductSpecialCodes().isEmpty());
assertEquals("Check restaurant name", newName, restaurant.getName());
assertFalse("Restaurant name is changed", backupedName.equals(restaurant.getName()));
} catch (MdoException e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage());
}
}
public void testGetDefaultTableType() {
try {
IRestaurantsDao dao = (IRestaurantsDao) this.getInstance();
TableType type = dao.getDefaultTableType(1L);
assertNotNull("Checking DefaultTableType", type);
assertNotNull("Checking DefaultTableType", type.getCode());
assertNotNull("Checking DefaultTableType", type.getCode().getLanguageKeyLabel());
assertNotNull("Checking DefaultTableType", type.getCode().getName());
assertNotNull("Checking DefaultTableType", type.getCode().getType());
} catch (MdoException e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage());
}
}
private IMdoBean createNewBean(Date registrationDate, String reference, String name, String addressRoad, String addressZip, String addressCity, String phone, String vatRef,
String visaRef, String tripleDESKey, boolean vatByTakeaway, MdoTableAsEnum specificRound,
TableType defaultTableType, Set<RestaurantPrefixTable> prefixTableNames, Set<RestaurantReductionTable> reductionTables,
Set<RestaurantValueAddedTax> vats, Set<RestaurantVatTableType> vatTableTypes, ValueAddedTax vat) {
Restaurant newBean = new Restaurant();
newBean.setRegistrationDate(registrationDate);
newBean.setReference(reference);
newBean.setName(name);
newBean.setAddressRoad(addressRoad);
newBean.setAddressZip(addressZip);
newBean.setAddressCity(addressCity);
newBean.setPhone(phone);
newBean.setVatRef(vatRef);
newBean.setVisaRef(visaRef);
newBean.setTripleDESKey(tripleDESKey);
newBean.setVatByTakeaway(vatByTakeaway);
newBean.setSpecificRound(specificRound);
newBean.setDefaultTableType(defaultTableType);
newBean.setPrefixTableNames(prefixTableNames);
newBean.setReductionTables(reductionTables);
newBean.setVats(vats);
newBean.setVatTableTypes(vatTableTypes);
newBean.setVat(vat);
return newBean;
}
}