From d22918385bde3af7d8bc89c808e272829ee111f0 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Thu, 9 Dec 2010 12:36:43 +0100 Subject: [PATCH] [Bug #668] Fix bug It checks if the order elements have got code before importing them. FEA : ItEr64S03BugFixing --- .../ws/common/impl/OrderElementConverter.java | 13 +++ .../ws/orders/OrderElementServiceTest.java | 100 ++++++++++++++++-- 2 files changed, 103 insertions(+), 10 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java index cb93978a7..c7be01466 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java @@ -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); } diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java index f3f52b1c4..ef2d6f6df 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java @@ -133,10 +133,10 @@ public class OrderElementServiceTest { transactionService.runOnAnotherTransaction(new IOnTransaction() { @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 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 instanceConstraintViolationsList = orderElementService + .addOrders(orderListDTO).instanceConstraintViolationsList; + + assertTrue(instanceConstraintViolationsList.toString(), + instanceConstraintViolationsList.size() == 1); + assertThat(instanceConstraintViolationsList.size(), equalTo(1)); + + List 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 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 instanceConstraintViolationsList = orderElementService + .addOrders(orderListDTO).instanceConstraintViolationsList; + assertThat(instanceConstraintViolationsList.size(), equalTo(1)); + + List 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 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 instanceConstraintViolationsList = orderElementService + .addOrders(orderListDTO).instanceConstraintViolationsList; + assertThat(instanceConstraintViolationsList.size(), equalTo(1)); + + List 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)); }