package fr.mch.mdo.restaurant.services.business.managers.tables; import OrdersManagerTest; import java.math.BigDecimal; import java.net.URL; import java.sql.Connection; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import javax.security.auth.Subject; import junit.framework.Test; import junit.framework.TestSuite; import fr.mch.mdo.restaurant.beans.IMdoDtoBean; import fr.mch.mdo.restaurant.dto.beans.DinnerTableDto; import fr.mch.mdo.restaurant.dto.beans.LocaleDto; import fr.mch.mdo.restaurant.dto.beans.MdoUserContext; import fr.mch.mdo.restaurant.dto.beans.OrderLineDto; import fr.mch.mdo.restaurant.dto.beans.UserAuthenticationDto; import fr.mch.mdo.restaurant.exception.MdoException; import fr.mch.mdo.restaurant.services.business.managers.MdoBusinessBasicTestCase; import fr.mch.mdo.restaurant.services.business.managers.users.DefaultUserAuthenticationsManager; import fr.mch.mdo.test.MdoTestCase; public class OrdersManagerTest extends MdoBusinessBasicTestCase { protected static MdoUserContext userContext = null; protected static MdoUserContext getUserContext() { if (userContext == null) { userContext = new MdoUserContext(new Subject()); LocaleDto currentLocale = new LocaleDto(); currentLocale.setLanguageCode(Locale.FRANCE.getLanguage()); userContext.setCurrentLocale(currentLocale); UserAuthenticationDto user = null; try { user = (UserAuthenticationDto) DefaultUserAuthenticationsManager.getInstance().findByPrimaryKey(1L, userContext, false); } catch (MdoException e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } userContext.setUserAuthentication(user); } return userContext; } @Override protected void loadFiles(Connection connection, String sqlDialectName, URL[] fileURLs) { /** * For testing without loading data then comment the next instruction **/ // fileURLs = new URL[] { ITestResources.class.getResource("montagnesdorStructure.sql"), // ITestResources.class.getResource("DataMigrationKimsan93.sql"), // ITestResources.class.getResource("DataMigrationProductWork.sql"), // ITestResources.class.getResource("DataMigrationProductCategoryWork.sql"), // ITestResources.class.getResource("DataMigrationDinnerTableWork.sql"), // ITestResources.class.getResource("DataMigrationRevenueWork.sql"), // ITestResources.class.getResource("DataMigrationProductSoldWork.sql"), // Will take a very long time // }; super.loadFiles(connection, sqlDialectName, fileURLs); // assertTrue(false); } /** * Create the test case * * @param testName * name of the test case */ public OrdersManagerTest(String testName) { super(testName); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite(OrdersManagerTest.class); } public void testDummy() { } public void _testOrders() { String prefixTableNumber = "1"; try { List<IMdoDtoBean> list = DefaultDinnerTablesManager.getInstance().findAll(userContext); assertNotNull("List of all table in database is not null", list); int allSize = list.size(); assertTrue("Check Size list of all table in database", allSize > 0); Map<Long, String> map = DefaultDinnerTablesManager.getInstance().findAllTableNamesByPrefix(OrdersManagerTest.getUserContext(), prefixTableNumber); assertNotNull("map result not null", map); assertFalse("map result not empty", map.isEmpty()); int filterSize = map.size(); assertTrue("Check filter Size map result not empty", allSize > filterSize); // This table belongs to restaurant id 1, it is already cashed Long dinnerTableId = 3L; DinnerTableDto dinnerTable = (DinnerTableDto) DefaultDinnerTablesManager.getInstance().findByPrimaryKey(dinnerTableId, OrdersManagerTest.getUserContext()); assertNotNull("dinnerTable not null", dinnerTable); assertNotNull("customerNumber not null", dinnerTable.getCustomersNumber()); String number = dinnerTable.getNumber(); // Find customers number by table number but all table with this number are cashed. Integer customersNumber = DefaultDinnerTablesManager.getInstance().getCustomersNumberByNumber(OrdersManagerTest.getUserContext(), number); assertNull("customersNumber null", customersNumber); // Could create a new table with this table number dinnerTable = DefaultDinnerTablesManager.getInstance().findTableByNumber(OrdersManagerTest.getUserContext(), number); assertNull("dinnerTable null", dinnerTable); dinnerTable = new DinnerTableDto(); // Set required fields customersNumber = 2; dinnerTable.setNumber(number); dinnerTable.setCustomersNumber(customersNumber); OrdersManagerTest.getUserContext().setMyDinnerTable(dinnerTable); try { dinnerTableId = DefaultDinnerTablesManager.getInstance().createFromUserContext(OrdersManagerTest.getUserContext(), dinnerTable.getNumber()); dinnerTable.setId(dinnerTableId); } catch(Exception e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } // Add some orders Set<OrderLineDto> orders = new HashSet<OrderLineDto>(); OrderLineDto order = new OrderLineDto(); order.setDinnerTable(dinnerTable); String code = "11"; order.setCode(code); order.setQuantity(BigDecimal.TEN); DefaultDinnerTablesManager.getInstance().processOrderLineByCode(OrdersManagerTest.userContext, order, null); //order.getProduct().setId(2L); order.setQuantity(new BigDecimal(11)); DefaultDinnerTablesManager.getInstance().addOrderLine(OrdersManagerTest.userContext, order); // orders.add(order); OrdersManagerTest.getUserContext().setMyDinnerTable(dinnerTable); dinnerTableId = DefaultDinnerTablesManager.getInstance().createFromUserContext(OrdersManagerTest.userContext, dinnerTable.getNumber()); dinnerTableId = DefaultDinnerTablesManager.getInstance().createFromUserContext(OrdersManagerTest.userContext, dinnerTable.getNumber()); assertNotNull("Dinner Table Id not null", dinnerTableId); // This table belongs to restaurant id 1, it is not already cashed dinnerTableId = 1L; dinnerTable = (DinnerTableDto) DefaultDinnerTablesManager.getInstance().findByPrimaryKey(dinnerTableId, OrdersManagerTest.getUserContext()); assertNotNull("dinnerTable not null", dinnerTable); assertNotNull("customerNumber not null", dinnerTable.getCustomersNumber()); number = dinnerTable.getNumber(); // Find customers number by table number customersNumber = DefaultDinnerTablesManager.getInstance().getCustomersNumberByNumber(OrdersManagerTest.getUserContext(), number); assertNotNull("customersNumber not null", customersNumber); // Could only update a new table with this table number dinnerTable = DefaultDinnerTablesManager.getInstance().findTableByNumber(OrdersManagerTest.getUserContext(), number); assertNotNull("dinnerTable not null", dinnerTable); } catch (Exception e) { fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getMessage()); } } }