[Bug #668] Fix bug

It checks if the order elements have got code before importing them.

FEA : ItEr64S03BugFixing
This commit is contained in:
Susana Montes Pedreira 2010-12-09 12:36:43 +01:00
parent d3dd859411
commit d22918385b
2 changed files with 103 additions and 10 deletions

View file

@ -266,11 +266,20 @@ public final class OrderElementConverter {
return orderElement;
}
private static void checkOrderElementDTOCode(
OrderElementDTO orderElementDTO,
String instance) {
if (orderElementDTO.code == null) {
throw new ValidationException(instance + _(": code not found"));
}
}
private static void addOrCriterionRequirements(OrderElement orderElement,
OrderElementDTO orderElementDTO) {
addOrCriterionRequirementsEntities(orderElement,
orderElementDTO.criterionRequirements);
if (orderElement != null) {
if (orderElementDTO instanceof OrderLineDTO) {
for (HoursGroupDTO hoursGroupDTO : ((OrderLineDTO) orderElementDTO).hoursGroups) {
HoursGroup hoursGroup = ((OrderLine) orderElement)
@ -287,6 +296,7 @@ public final class OrderElementConverter {
addOrCriterionRequirements(child, childDTO);
}
}
}
}
private static void addOrCriterionRequirementsEntities(
@ -369,6 +379,7 @@ public final class OrderElementConverter {
OrderElement orderElement;
if (orderElementDTO instanceof OrderLineDTO) {
checkOrderElementDTOCode(orderElementDTO, "OrderLineDTO");
if ((configuration.isHoursGroups())
&& (!((OrderLineDTO) orderElementDTO).hoursGroups.isEmpty())) {
orderElement = OrderLine
@ -390,6 +401,7 @@ public final class OrderElementConverter {
} else { // orderElementDTO instanceof OrderLineGroupDTO
if (orderElementDTO instanceof OrderDTO) {
checkOrderElementDTOCode(orderElementDTO, "OrderDTO");
orderElement = Order.createUnvalidated(orderElementDTO.code);
Scenario current = Registry.getScenarioManager().getCurrent();
((Order) orderElement).setVersionForScenario(current,
@ -407,6 +419,7 @@ public final class OrderElementConverter {
}
((Order) orderElement).setCalendar(calendar);
} else { // orderElementDTO instanceof OrderLineGroupDTO
checkOrderElementDTOCode(orderElementDTO, "OrderLineGroupDTO");
orderElement = OrderLineGroup
.createUnvalidated(orderElementDTO.code);
}

View file

@ -133,10 +133,10 @@ public class OrderElementServiceTest {
transactionService.runOnAnotherTransaction(new IOnTransaction<Void>() {
@Override
public Void execute() {
configurationBootstrap.loadRequiredData();
materialCategoryBootstrap.loadRequiredData();
criterionsBootstrap.loadRequiredData();
unitTypeBootstrap.loadRequiredData();
configurationBootstrap.loadRequiredData();
defaultAdvanceTypesBootstrapListener.loadRequiredData();
scenariosBootstrap.loadRequiredData();
return null;
@ -181,7 +181,7 @@ public class OrderElementServiceTest {
}
@Test
public void invalidOrderWithoutAttributes() {
public void invalidOrderWithoutCode() {
int previous = orderDAO.getOrders().size();
OrderDTO orderDTO = new OrderDTO();
@ -196,10 +196,34 @@ public class OrderElementServiceTest {
List<ConstraintViolationDTO> constraintViolations = instanceConstraintViolationsList
.get(0).constraintViolations;
// Mandatory fields: code, infoComponent.code, infoComponent.name. Check
assertThat(constraintViolations.size(), equalTo(1));
assertThat(orderDAO.getOrders().size(), equalTo(previous));
}
@Test
public void invalidOrderWithoutAttributes() {
int previous = orderDAO.getOrders().size();
OrderDTO orderDTO = new OrderDTO();
orderDTO.code = "order-code " + UUID.randomUUID().toString();
OrderListDTO orderListDTO = createOrderListDTO(orderDTO);
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = orderElementService
.addOrders(orderListDTO).instanceConstraintViolationsList;
assertTrue(instanceConstraintViolationsList.toString(),
instanceConstraintViolationsList.size() == 1);
assertThat(instanceConstraintViolationsList.size(), equalTo(1));
List<ConstraintViolationDTO> constraintViolations = instanceConstraintViolationsList
.get(0).constraintViolations;
// Mandatory fields: infoComponent.code, infoComponent.name. Check
// constraints:
// checkConstraintOrderMustHaveStartDate
assertThat(constraintViolations.size(), equalTo(4));
assertThat(constraintViolations.size(), equalTo(2));
assertThat(orderDAO.getOrders().size(), equalTo(previous));
}
@ -228,10 +252,11 @@ public class OrderElementServiceTest {
}
@Test
public void invalidOrderWithoutCodeAndInitDate() {
public void invalidOrderWithoutInitDate() {
int previous = orderDAO.getOrders().size();
OrderDTO orderDTO = new OrderDTO();
orderDTO.code = "order-code " + UUID.randomUUID().toString();
orderDTO.name = "Order name " + UUID.randomUUID().toString();
OrderListDTO orderListDTO = createOrderListDTO(orderDTO);
@ -243,16 +268,17 @@ public class OrderElementServiceTest {
.get(0).constraintViolations;
// Mandatory fields: code, infoComponentCode. Check constraints:
// checkConstraintOrderMustHaveStartDate
assertThat(constraintViolations.size(), equalTo(3));
assertThat(constraintViolations.size(), equalTo(1));
assertThat(orderDAO.getOrders().size(), equalTo(previous));
}
@Test
public void invalidOrderWithoutCodeAndName() {
public void invalidOrderWithoutName() {
int previous = orderDAO.getOrders().size();
OrderDTO orderDTO = new OrderDTO();
orderDTO.code = "order-code " + UUID.randomUUID().toString();
orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date());
OrderListDTO orderListDTO = createOrderListDTO(orderDTO);
@ -263,7 +289,7 @@ public class OrderElementServiceTest {
List<ConstraintViolationDTO> constraintViolations = instanceConstraintViolationsList
.get(0).constraintViolations;
// Mandatory fields: code,infoComponent.code, infoComponent.name
assertThat(constraintViolations.size(), equalTo(3));
assertThat(constraintViolations.size(), equalTo(1));
for (ConstraintViolationDTO constraintViolationDTO : constraintViolations) {
assertThat(constraintViolationDTO.fieldName, anyOf(mustEnd("code"),
mustEnd("name")));
@ -299,6 +325,32 @@ public class OrderElementServiceTest {
orderDTO.code = "order-code " + UUID.randomUUID().toString();
orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date());
OrderLineDTO orderLineDTO = new OrderLineDTO();
orderLineDTO.code = "order-line-code " + UUID.randomUUID().toString();
orderDTO.children.add(orderLineDTO);
OrderListDTO orderListDTO = createOrderListDTO(orderDTO);
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = orderElementService
.addOrders(orderListDTO).instanceConstraintViolationsList;
assertThat(instanceConstraintViolationsList.size(), equalTo(1));
List<ConstraintViolationDTO> constraintViolations = instanceConstraintViolationsList
.get(0).constraintViolations;
// Mandatory fields: infoComponent.code, infoComponent.name.
assertThat(constraintViolations.size(), equalTo(1));
assertThat(orderDAO.getOrders().size(), equalTo(previous));
}
@Test
public void orderWithOrderLineWithoutCode() {
int previous = orderDAO.getOrders().size();
OrderDTO orderDTO = new OrderDTO();
orderDTO.name = "Order name " + UUID.randomUUID().toString();
orderDTO.code = "order-code " + UUID.randomUUID().toString();
orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date());
OrderLineDTO orderLineDTO = new OrderLineDTO();
orderDTO.children.add(orderLineDTO);
@ -310,7 +362,7 @@ public class OrderElementServiceTest {
List<ConstraintViolationDTO> constraintViolations = instanceConstraintViolationsList
.get(0).constraintViolations;
// Mandatory fields: code,infoComponent.code, infoComponent.name.
assertThat(constraintViolations.size(), equalTo(3));
assertThat(constraintViolations.size(), equalTo(1));
assertThat(orderDAO.getOrders().size(), equalTo(previous));
}
@ -390,6 +442,34 @@ public class OrderElementServiceTest {
orderDTO.code = "order-code " + UUID.randomUUID().toString();
orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date());
OrderLineGroupDTO orderLineGroupDTO = new OrderLineGroupDTO();
orderLineGroupDTO.code = "order-code " + UUID.randomUUID().toString();
orderDTO.children.add(orderLineGroupDTO);
OrderListDTO orderListDTO = createOrderListDTO(orderDTO);
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = orderElementService
.addOrders(orderListDTO).instanceConstraintViolationsList;
assertThat(instanceConstraintViolationsList.size(), equalTo(1));
List<ConstraintViolationDTO> constraintViolations = instanceConstraintViolationsList
.get(0).constraintViolations;
// Mandatory fields: infoComponent.code, infoComponenet.name. Check
// constraints:
// checkConstraintAtLeastOneHoursGroupForEachOrderElement
assertThat(constraintViolations.size(), equalTo(2));
assertThat(orderDAO.getOrders().size(), equalTo(previous));
}
@Test
public void orderWithOrderLineGroupWithoutCode() {
int previous = orderDAO.getOrders().size();
OrderDTO orderDTO = new OrderDTO();
orderDTO.name = "Order name " + UUID.randomUUID().toString();
orderDTO.code = "order-code " + UUID.randomUUID().toString();
orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date());
OrderLineGroupDTO orderLineGroupDTO = new OrderLineGroupDTO();
orderDTO.children.add(orderLineGroupDTO);
@ -403,7 +483,7 @@ public class OrderElementServiceTest {
// Mandatory fields: code,infoComponent.code, infoComponenet.name. Check
// constraints:
// checkConstraintAtLeastOneHoursGroupForEachOrderElement
assertThat(constraintViolations.size(), equalTo(4));
assertThat(constraintViolations.size(), equalTo(1));
assertThat(orderDAO.getOrders().size(), equalTo(previous));
}