package fr.mch.mdo.restaurant.services.business.managers.tables; import java.util.ArrayList; import java.util.List; import junit.framework.Test; import junit.framework.TestSuite; import fr.mch.mdo.restaurant.beans.IMdoBean; import fr.mch.mdo.restaurant.beans.IMdoDtoBean; import fr.mch.mdo.restaurant.dao.beans.Locale; import fr.mch.mdo.restaurant.dto.beans.MdoTableAsEnumDto; import fr.mch.mdo.restaurant.dto.beans.TableTypeDto; import fr.mch.mdo.restaurant.dto.beans.TableTypesManagerViewBean; import fr.mch.mdo.restaurant.exception.MdoException; import fr.mch.mdo.restaurant.services.business.managers.DefaultAdministrationManagerTest; import fr.mch.mdo.restaurant.services.business.managers.DefaultMdoTableAsEnumsManager; import fr.mch.mdo.restaurant.services.business.managers.IAdministrationManager; import fr.mch.mdo.test.MdoTestCase; public class DefaultTableTypesManagerTest extends DefaultAdministrationManagerTest { /** * Create the test case * * @param testName * name of the test case */ public DefaultTableTypesManagerTest(String testName) { super(testName); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite(DefaultTableTypesManagerTest.class); } @Override protected IAdministrationManager getInstance() { return DefaultTableTypesManager.getInstance(); } @Override protected IMdoDtoBean createNewBean() { MdoTableAsEnumDto code = new MdoTableAsEnumDto(); // Use the existing data in database code.setId(1L); try { code = (MdoTableAsEnumDto) DefaultMdoTableAsEnumsManager.getInstance().findByPrimaryKey(code.getId(), userContext); } catch (MdoException e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } return createNewBean(code); } @Override protected List<IMdoBean> createListBeans() { List<IMdoBean> list = new ArrayList<IMdoBean>(); MdoTableAsEnumDto code = new MdoTableAsEnumDto(); // Use the existing data in database code.setId(2L); try { code = (MdoTableAsEnumDto) DefaultMdoTableAsEnumsManager.getInstance().findByPrimaryKey(code.getId(), userContext); } catch (MdoException e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } list.add(createNewBean(code)); // Use the existing data in database code = new MdoTableAsEnumDto(); code.setId(3L); try { code = (MdoTableAsEnumDto) DefaultMdoTableAsEnumsManager.getInstance().findByPrimaryKey(code.getId(), userContext); } catch (MdoException e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } list.add(createNewBean(code)); return list; } @Override public void doUpdate() { MdoTableAsEnumDto code = new MdoTableAsEnumDto(); // Use the existing data in database code.setId(4L); try { code = (MdoTableAsEnumDto) DefaultMdoTableAsEnumsManager.getInstance().findByPrimaryKey(code.getId(), userContext); } catch (MdoException e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } try { // Create new bean to be updated IMdoBean beanToBeUpdated = this.getInstance().insert(createNewBean(code), DefaultAdministrationManagerTest.userContext); assertTrue("IMdoBean must be instance of " + Locale.class, beanToBeUpdated instanceof TableTypeDto); TableTypeDto castedBean = (TableTypeDto) beanToBeUpdated; assertNotNull("TableTypeDto code must not be null", castedBean.getCode()); assertEquals("TableTypeDto code must be equals to unique key", code.getLanguageKeyLabel(), castedBean.getCode().getLanguageKeyLabel()); // Use the existing data in database code.setId(5L); code = (MdoTableAsEnumDto) DefaultMdoTableAsEnumsManager.getInstance().findByPrimaryKey(code.getId(), userContext); // Update the created bean castedBean.setCode(code); castedBean = (TableTypeDto) this.getInstance().update(castedBean, DefaultAdministrationManagerTest.userContext); // Reload the modified bean TableTypeDto updatedBean = new TableTypeDto(); updatedBean.setId(castedBean.getId()); IMdoBean loadedBean = this.getInstance().load(updatedBean, DefaultAdministrationManagerTest.userContext); assertTrue("IMdoBean must be instance of " + TableTypeDto.class, loadedBean instanceof TableTypeDto); updatedBean = (TableTypeDto) loadedBean; assertNotNull("TableTypeDto code must not be null", updatedBean.getCode()); assertEquals("TableTypeDto code must be equals to unique key", code.getLanguageKeyLabel(), updatedBean.getCode().getLanguageKeyLabel()); } catch (Exception e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } } @Override public void doProcessList() { TableTypesManagerViewBean viewBean = new TableTypesManagerViewBean(); try { this.getInstance().processList(viewBean, DefaultAdministrationManagerTest.userContext); assertNotNull("Main list not be null", viewBean.getList()); assertFalse("Main list not be empty", viewBean.getList().isEmpty()); assertNotNull("Codes list not be null", viewBean.getCodes()); assertTrue("Codes list be empty because all available table types are already set into database", viewBean.getCodes().isEmpty()); } catch (MdoException e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } } public void testGetInstance() { assertTrue(this.getInstance() instanceof ITableTypesManager); assertTrue(this.getInstance() instanceof DefaultTableTypesManager); } public void testFindByCodeName() { String codeName = null; try { ((ITableTypesManager) this.getInstance()).findByCodeName(codeName, DefaultAdministrationManagerTest.userContext); fail(DEFAULT_FAILED_MESSAGE); } catch (MdoException e) { assertNotNull("Exception because codeName null", e); } try { codeName = ""; TableTypeDto tableType = ((ITableTypesManager) this.getInstance()).findByCodeName(codeName, DefaultAdministrationManagerTest.userContext); assertNull("TableTypeDto must be null", tableType); codeName = "TAKE_AWAY"; tableType = ((ITableTypesManager) this.getInstance()).findByCodeName(codeName, DefaultAdministrationManagerTest.userContext); assertNotNull("TableTypeDto must NOT be null", tableType); assertEquals("Check TableTypeDto code name", codeName, tableType.getCode().getName()); } catch (MdoException e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } } private IMdoDtoBean createNewBean(MdoTableAsEnumDto code) { TableTypeDto newBean = new TableTypeDto(); newBean.setCode(code); return newBean; } }