package fr.mch.mdo.restaurant.dao.locales.hibernate; 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.Locale; import fr.mch.mdo.restaurant.dao.hibernate.DefaultDaoServicesTestCase; import fr.mch.mdo.restaurant.dao.locales.ILocalesDao; import fr.mch.mdo.test.MdoTestCase; public class DefaultLocalesDaoTest extends DefaultDaoServicesTestCase { /** * Create the test case * * @param testName * name of the test case */ public DefaultLocalesDaoTest(String testName) { super(testName); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite(DefaultLocalesDaoTest.class); } @Override protected IDaoServices getInstance() { return DefaultLocalesDao.getInstance(); } @Override protected IMdoBean createNewBean() { return createNewBean(java.util.Locale.ENGLISH.getLanguage()); } @Override protected List<IMdoBean> createListBeans() { List<IMdoBean> list = new ArrayList<IMdoBean>(); list.add(createNewBean(java.util.Locale.JAPANESE.getLanguage())); list.add(createNewBean(java.util.Locale.GERMAN.getLanguage())); return list; } public void testGetInstance() { assertTrue(this.getInstance() instanceof ILocalesDao); assertTrue(this.getInstance() instanceof DefaultLocalesDao); } @Override public void doFindByUniqueKey() { // French locale was created at HSQLDB startup String localeCode = java.util.Locale.FRENCH.getLanguage(); try { IMdoBean bean = this.getInstance().findByUniqueKey(localeCode); assertTrue("IMdoBean must be instance of " + Locale.class, bean instanceof Locale); Locale castedBean = (Locale) bean; assertNotNull("Locale language must not be null", castedBean.getLanguage()); assertEquals("Locale language must be equals to unique key", localeCode, castedBean.getLanguage()); assertFalse("Locale must not be deleted", castedBean.isDeleted()); } catch (Exception e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } } @Override public void doUpdate() { String localeCodeToBeUpdated = java.util.Locale.GERMAN.getLanguage(); try { // Create new bean to be updated IMdoBean beanToBeUpdated = this.getInstance().insert(createNewBean(localeCodeToBeUpdated)); assertTrue("IMdoBean must be instance of " + Locale.class, beanToBeUpdated instanceof Locale); Locale castedBean = (Locale) beanToBeUpdated; assertNotNull("Locale language must not be null", castedBean.getLanguage()); assertEquals("Locale language must be equals to unique key", localeCodeToBeUpdated, castedBean.getLanguage()); assertFalse("Locale must not be deleted", castedBean.isDeleted()); // Update the created bean castedBean.setLanguage(java.util.Locale.ITALIAN.getLanguage()); castedBean.setDeleted(true); this.getInstance().update(castedBean); // Reload the modified bean Locale updatedBean = new Locale(); updatedBean.setId(castedBean.getId()); this.getInstance().load(updatedBean); assertNotNull("Locale language must not be null", updatedBean.getLanguage()); assertEquals("Locale language must be equals to unique key", java.util.Locale.ITALIAN.getLanguage(), updatedBean.getLanguage()); assertTrue("Locale must be deleted", updatedBean.isDeleted()); } catch (Exception e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } } @Override public void doUpdateFieldsAndDeleteByKeysSpecific() { String localeCodeToBeUpdated = java.util.Locale.JAPAN.getLanguage(); try { // Create new bean to be updated IMdoBean beanToBeUpdated = this.getInstance().insert(createNewBean(localeCodeToBeUpdated)); assertTrue("IMdoBean must be instance of " + Locale.class, beanToBeUpdated instanceof Locale); Locale castedBean = (Locale) beanToBeUpdated; assertNotNull("Locale language must not be null", castedBean.getLanguage()); assertEquals("Locale language must be equals to unique key", localeCodeToBeUpdated, castedBean.getLanguage()); assertFalse("Locale 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.setLanguage(java.util.Locale.KOREA.getLanguage()); fields.put("language", castedBean.getLanguage()); keys.put("id", castedBean.getId()); this.getInstance().updateFieldsByKeys(fields, keys); // Reload the modified bean Locale updatedBean = (Locale) createNewBean(); updatedBean.setId(castedBean.getId()); this.getInstance().load(updatedBean); assertEquals("Check updated fields ", castedBean.getLanguage(), updatedBean.getLanguage()); // 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(String language) { Locale newBean = new Locale(); newBean.setLanguage(language); return newBean; } }