ItEr44S11CUImportarTraballoRealizadoPorSubcontrataItEr43S14: Added tests for subcontract web service.

This commit is contained in:
Manuel Rego Casasnovas 2010-01-22 08:16:38 +01:00 committed by Javier Moran Rua
parent 244e4cdae0
commit 90c1080a96

View file

@ -0,0 +1,190 @@
/*
* This file is part of ###PROJECT_NAME###
*
* Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e
* Desenvolvemento Tecnolóxico de Galicia
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.navalplanner.web.test.ws.subcontract;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE;
import static org.navalplanner.web.WebappGlobalNames.WEBAPP_SPRING_CONFIG_FILE;
import static org.navalplanner.web.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CONFIG_FILE;
import static org.navalplanner.web.test.WebappGlobalNames.WEBAPP_SPRING_CONFIG_TEST_FILE;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.navalplanner.business.IDataBootstrap;
import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO;
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
import org.navalplanner.business.orders.daos.IOrderDAO;
import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.ws.common.api.InstanceConstraintViolationsDTO;
import org.navalplanner.ws.common.api.OrderElementDTO;
import org.navalplanner.ws.common.api.OrderLineDTO;
import org.navalplanner.ws.subcontract.api.ISubcontractService;
import org.navalplanner.ws.subcontract.api.SubcontractedTaskDataDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
/**
* Tests for {@link ISubcontractService}.
*
* @author Manuel Rego Casasnovas <mrego@igalia.com>
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE,
WEBAPP_SPRING_CONFIG_FILE, WEBAPP_SPRING_CONFIG_TEST_FILE,
WEBAPP_SPRING_SECURITY_CONFIG_FILE })
@Transactional
public class SubcontractServiceTest {
@Resource
private IDataBootstrap defaultAdvanceTypesBootstrapListener;
@Resource
private IDataBootstrap configurationBootstrap;
@Before
public void loadRequiredaData() {
defaultAdvanceTypesBootstrapListener.loadRequiredData();
configurationBootstrap.loadRequiredData();
}
@Autowired
private ISubcontractService subcontractService;
@Autowired
private IOrderDAO orderDAO;
@Autowired
private IExternalCompanyDAO externalCompanyDAO;
@Autowired
private SessionFactory sessionFactory;
private OrderLineDTO givenBasicOrderLineDTO(String orderLineCode) {
OrderLineDTO orderLineDTO = new OrderLineDTO();
orderLineDTO.name = "Test";
orderLineDTO.code = orderLineCode;
orderLineDTO.initDate = new Date();
return orderLineDTO;
}
private ExternalCompany getClientExternalCompanySaved(String name,
String nif) {
ExternalCompany externalCompany = ExternalCompany.create(name, nif);
externalCompany.setClient(true);
externalCompanyDAO.save(externalCompany);
externalCompanyDAO.flush();
sessionFactory.getCurrentSession().evict(externalCompany);
externalCompany.dontPoseAsTransientObjectAnymore();
return externalCompany;
}
@Test
@Rollback(false)
public void testNotRollback() {
// Just to do not make rollback in order to have the default
// configuration, needed for prepareForCreate in order to autogenerate
// the order code
}
@Test
public void invalidSubcontractedTaskDataWithoutExternalCompanyNif() {
int previous = orderDAO.getOrders().size();
String orderLineCode = "order-line-code";
OrderElementDTO orderElementDTO = givenBasicOrderLineDTO(orderLineCode);
SubcontractedTaskDataDTO subcontractedTaskDataDTO = new SubcontractedTaskDataDTO();
subcontractedTaskDataDTO.orderElementDTO = orderElementDTO;
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = subcontractService
.subcontract(subcontractedTaskDataDTO).instanceConstraintViolationsList;
assertThat(instanceConstraintViolationsList.size(), equalTo(1));
assertThat(orderDAO.getOrders().size(), equalTo(previous));
}
@Test
public void invalidSubcontractedTaskDataWithoutOrderElement() {
int previous = orderDAO.getOrders().size();
ExternalCompany externalCompany = getClientExternalCompanySaved(
"Company", "company-nif");
SubcontractedTaskDataDTO subcontractedTaskDataDTO = new SubcontractedTaskDataDTO();
subcontractedTaskDataDTO.externalCompanyNif = externalCompany.getNif();
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = subcontractService
.subcontract(subcontractedTaskDataDTO).instanceConstraintViolationsList;
assertThat(instanceConstraintViolationsList.size(), equalTo(1));
assertThat(orderDAO.getOrders().size(), equalTo(previous));
}
@Test
public void validSubcontractedTaskData() {
int previous = orderDAO.getOrders().size();
String orderLineCode = "order-line-code";
OrderElementDTO orderElementDTO = givenBasicOrderLineDTO(orderLineCode);
ExternalCompany externalCompany = getClientExternalCompanySaved(
"Company", "company-nif");
SubcontractedTaskDataDTO subcontractedTaskDataDTO = new SubcontractedTaskDataDTO();
subcontractedTaskDataDTO.orderElementDTO = orderElementDTO;
subcontractedTaskDataDTO.externalCompanyNif = externalCompany.getNif();
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = subcontractService
.subcontract(subcontractedTaskDataDTO).instanceConstraintViolationsList;
assertThat(instanceConstraintViolationsList.size(), equalTo(0));
assertThat(orderDAO.getOrders().size(), equalTo(previous + 1));
Order order = orderDAO.getOrders().get(previous);
assertNotNull(order.getCode());
assertNull(order.getExternalCode());
assertThat(order.getWorkHours(), equalTo(0));
List<OrderElement> children = order.getChildren();
assertThat(children.size(), equalTo(1));
assertThat(children.get(0).getExternalCode(), equalTo(orderLineCode));
}
}