package fr.mch.mdo.restaurant.services.business.managers.restaurants;
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.dto.beans.RestaurantDto;
import fr.mch.mdo.restaurant.dto.beans.RestaurantVatTableTypeDto;
import fr.mch.mdo.restaurant.dto.beans.RestaurantVatTableTypesManagerViewBean;
import fr.mch.mdo.restaurant.dto.beans.TableTypeDto;
import fr.mch.mdo.restaurant.dto.beans.ValueAddedTaxDto;
import fr.mch.mdo.restaurant.exception.MdoException;
import fr.mch.mdo.restaurant.services.business.managers.DefaultAdministrationManagerTest;
import fr.mch.mdo.restaurant.services.business.managers.IAdministrationManager;
import fr.mch.mdo.test.MdoTestCase;
public class DefaultRestaurantVatTableTypesManagerTest extends DefaultAdministrationManagerTest
{
/**
* Create the test case
*
* @param testName
* name of the test case
*/
public DefaultRestaurantVatTableTypesManagerTest(String testName) {
super(testName);
}
/**
* @return the suite of tests being tested
*/
public static Test suite() {
return new TestSuite(DefaultRestaurantVatTableTypesManagerTest.class);
}
@Override
protected IAdministrationManager getInstance() {
return DefaultRestaurantVatTableTypesManager.getInstance();
}
@Override
protected IMdoDtoBean createNewBean() {
// Use the existing data in database
ValueAddedTaxDto vat = new ValueAddedTaxDto();
vat.setId(1L);
RestaurantDto restaurant = new RestaurantDto();
restaurant.setId(1L);
TableTypeDto type = new TableTypeDto();
type.setId(1L);
return createNewBean(vat, restaurant, type);
}
@Override
protected List<IMdoBean> createListBeans() {
List<IMdoBean> list = new ArrayList<IMdoBean>();
// Use the existing data in database
ValueAddedTaxDto vat = new ValueAddedTaxDto();
vat.setId(1L);
RestaurantDto restaurant = new RestaurantDto();
restaurant.setId(1L);
TableTypeDto type = new TableTypeDto();
type.setId(2L);
list.add(createNewBean(vat, restaurant, type));
return list;
}
@Override
public void doUpdate() {
IMdoDtoBean newBean = null;
// Use the existing data in database
ValueAddedTaxDto vat = new ValueAddedTaxDto();
vat.setId(1L);
RestaurantDto restaurant = new RestaurantDto();
restaurant.setId(2L);
TableTypeDto type = new TableTypeDto();
type.setId(1L);
newBean = createNewBean(vat, restaurant, type);
try {
// Create new bean to be updated
IMdoBean beanToBeUpdated = this.getInstance().insert(newBean);
assertTrue("IMdoBean must be instance of " + RestaurantVatTableTypeDto.class, beanToBeUpdated instanceof RestaurantVatTableTypeDto);
RestaurantVatTableTypeDto castedBean = (RestaurantVatTableTypeDto) beanToBeUpdated;
assertNotNull("RestaurantVatTableType vat must not be null", castedBean.getVat());
assertEquals("RestaurantVatTableType vat must be equals to the inserted value", vat.getId(), castedBean.getVat().getId());
assertNotNull("RestaurantVatTableType restaurant must not be null", castedBean.getRestaurant());
assertEquals("RestaurantVatTableType restaurant must be equals to the inserted value", restaurant.getId(), castedBean.getRestaurant().getId());
assertNotNull("RestaurantVatTableType type must not be null", castedBean.getType());
assertEquals("RestaurantVatTableType type must be equals to the inserted value", type.getId(), castedBean.getType().getId());
// Update the created bean
// Use the existing data in database
vat = new ValueAddedTaxDto();
vat.setId(2L);
castedBean.setVat(vat);
this.getInstance().update(castedBean);
// Reload the modified bean
RestaurantVatTableTypeDto updatedBean = (RestaurantVatTableTypeDto) createNewBean();
updatedBean.setId(castedBean.getId());
updatedBean = (RestaurantVatTableTypeDto) this.getInstance().load(updatedBean);
assertNotNull("RestaurantVatTableType prefix must not be null", updatedBean.getVat());
assertEquals("RestaurantVatTableType prefix must be equals to the inserted value", vat.getId(), updatedBean.getVat().getId());
assertNotNull("RestaurantVatTableType restaurant must not be null", updatedBean.getRestaurant());
assertEquals("RestaurantVatTableType restaurant must be equals to the inserted value", restaurant.getId(), updatedBean.getRestaurant().getId());
assertNotNull("RestaurantVatTableType type must not be null", updatedBean.getType());
assertEquals("RestaurantVatTableType type must be equals to the inserted value", type.getId(), updatedBean.getType().getId());
this.getInstance().delete(updatedBean);
} catch (Exception e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getLocalizedMessage());
}
}
@Override
public void doProcessList() {
RestaurantVatTableTypesManagerViewBean viewBean = new RestaurantVatTableTypesManagerViewBean();
try {
this.getInstance().processList(viewBean);
assertNotNull("Main list not be null", viewBean.getList());
assertFalse("Main list not be empty", viewBean.getList().isEmpty());
assertNotNull("Types list not be null", viewBean.getTypes());
assertFalse("Types list not be empty", viewBean.getTypes().isEmpty());
} catch (MdoException e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getLocalizedMessage());
}
}
public void testGetInstance() {
IAdministrationManager manager = this.getInstance();
assertTrue(manager instanceof IRestaurantVatTableTypesManager);
assertTrue(manager instanceof DefaultRestaurantVatTableTypesManager);
}
public void testFindAll() {
Long restaurantId = 1L;
String typeName = "TAKE_AWAY";
List<IMdoDtoBean> list = null;
IRestaurantVatTableTypesManager manager = (IRestaurantVatTableTypesManager) this.getInstance();
// By Restaurant Id
try {
list = manager.findAll(DefaultAdministrationManagerTest.userContext, restaurantId);
assertNotNull("List by Restaurant Id must not be null", list);
assertFalse("List by Restaurant Id must not be empty", list.isEmpty());
} catch (MdoException e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getLocalizedMessage());
}
// By Restaurant Id and Type Name
try {
list = manager.findAll(DefaultAdministrationManagerTest.userContext, restaurantId, typeName);
assertNotNull("List by Restaurant Id and type name must not be null", list);
assertFalse("List by Restaurant Id must not be empty", list.isEmpty());
} catch (MdoException e) {
fail(MdoTestCase.DEFAULT_FAILED_MESSAGE + ": " + e.getLocalizedMessage());
}
}
private IMdoDtoBean createNewBean(ValueAddedTaxDto vat, RestaurantDto restaurant, TableTypeDto type) {
RestaurantVatTableTypeDto newBean = new RestaurantVatTableTypeDto();
newBean.setVat(vat);
newBean.setRestaurant(restaurant);
newBean.setType(type);
return newBean;
}
}