ItEr39S17CUImportacionOrganizacionsTraballo: Adding properly messages and checks about mandatory attributes to OrderLine and HoursGroup.
This commit is contained in:
parent
e2241b40ca
commit
4690e79f54
7 changed files with 135 additions and 4 deletions
|
|
@ -26,6 +26,7 @@ import java.util.Collections;
|
|||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hibernate.validator.NotEmpty;
|
||||
import org.hibernate.validator.NotNull;
|
||||
import org.hibernate.validator.Valid;
|
||||
import org.navalplanner.business.common.BaseEntity;
|
||||
|
|
@ -52,11 +53,12 @@ public class HoursGroup extends BaseEntity implements Cloneable {
|
|||
return create(result);
|
||||
}
|
||||
|
||||
@NotEmpty(message = "name (code) not specified")
|
||||
private String name;
|
||||
|
||||
private ResourceEnum resourceType = ResourceEnum.WORKER;
|
||||
|
||||
@NotNull
|
||||
@NotNull(message = "working hours not specified")
|
||||
private Integer workingHours = 0;
|
||||
|
||||
private BigDecimal percentage = new BigDecimal(0).setScale(2);
|
||||
|
|
@ -103,7 +105,7 @@ public class HoursGroup extends BaseEntity implements Cloneable {
|
|||
|
||||
public void setWorkingHours(Integer workingHours)
|
||||
throws IllegalArgumentException {
|
||||
if (workingHours < 0) {
|
||||
if ((workingHours != null) && (workingHours < 0)) {
|
||||
throw new IllegalArgumentException(
|
||||
_("Working hours shouldn't be neagtive"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hibernate.validator.Valid;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.navalplanner.business.advance.entities.AdvanceType;
|
||||
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
|
||||
|
|
@ -111,6 +112,7 @@ public class OrderLine extends OrderElement {
|
|||
}
|
||||
}
|
||||
|
||||
@Valid
|
||||
@Override
|
||||
public List<HoursGroup> getHoursGroups() {
|
||||
return new ArrayList<HoursGroup>(hoursGroups);
|
||||
|
|
@ -312,7 +314,10 @@ public class OrderLine extends OrderElement {
|
|||
private Integer calculateTotalHours(Set<HoursGroup> hoursGroups) {
|
||||
Integer result = 0;
|
||||
for (HoursGroup hoursGroup : hoursGroups) {
|
||||
result += hoursGroup.getWorkingHours();
|
||||
Integer workingHours = hoursGroup.getWorkingHours();
|
||||
if (workingHours != null) {
|
||||
result += workingHours;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ public class AddAdvanceAssignmentsToOrderElementTest {
|
|||
result.setCode(code);
|
||||
HoursGroup hoursGroup = HoursGroup.create(result);
|
||||
hoursGroup.setWorkingHours(0);
|
||||
hoursGroup.setName("hoursGroupName");
|
||||
result.addHoursGroup(hoursGroup);
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@ public class ResourceAllocationDAOTest {
|
|||
orderElementDAO.save(orderLine);
|
||||
|
||||
HoursGroup hoursGroup = HoursGroup.create(orderLine);
|
||||
hoursGroup.setName("hoursGroupName");
|
||||
hoursGroupDAO.save(hoursGroup);
|
||||
|
||||
List<HoursGroup> hoursGroups = Arrays.asList(hoursGroup);
|
||||
|
|
|
|||
|
|
@ -113,6 +113,7 @@ public class TaskElementDAOTest {
|
|||
|
||||
private Task createValidTask() {
|
||||
associatedHoursGroup = new HoursGroup();
|
||||
associatedHoursGroup.setName("hoursGroupName");
|
||||
OrderLine orderLine = createOrderLine();
|
||||
orderLine.addHoursGroup(associatedHoursGroup);
|
||||
TaskSource taskSource = TaskSource
|
||||
|
|
@ -128,7 +129,9 @@ public class TaskElementDAOTest {
|
|||
OrderLine orderLine = OrderLine.create();
|
||||
orderLine.setName("bla");
|
||||
orderLine.setCode("000000000");
|
||||
orderLine.addHoursGroup(new HoursGroup());
|
||||
HoursGroup hoursGroup = new HoursGroup();
|
||||
hoursGroup.setName("hoursGroupName");
|
||||
orderLine.addHoursGroup(hoursGroup);
|
||||
Order order = Order.create();
|
||||
order.setName("bla");
|
||||
order.setInitDate(new Date());
|
||||
|
|
|
|||
|
|
@ -280,6 +280,7 @@ public class OrderModelTest {
|
|||
result.setCode("000000000");
|
||||
|
||||
HoursGroup hoursGroup = HoursGroup.create(result);
|
||||
hoursGroup.setName("hoursGroupName");
|
||||
hoursGroup.setWorkingHours(0);
|
||||
result.addHoursGroup(hoursGroup);
|
||||
|
||||
|
|
@ -311,6 +312,7 @@ public class OrderModelTest {
|
|||
container.add(leaf);
|
||||
order.add(container);
|
||||
HoursGroup hoursGroup = HoursGroup.create(leaf);
|
||||
hoursGroup.setName("hoursGroupName");
|
||||
hoursGroup.setWorkingHours(3);
|
||||
leaf.addHoursGroup(hoursGroup);
|
||||
orderModel.setOrder(order);
|
||||
|
|
@ -358,8 +360,10 @@ public class OrderModelTest {
|
|||
order.add(orderLine);
|
||||
|
||||
HoursGroup hoursGroup = HoursGroup.create(orderLine);
|
||||
hoursGroup.setName("hoursGroupName");
|
||||
hoursGroup.setWorkingHours(10);
|
||||
HoursGroup hoursGroup2 = HoursGroup.create(orderLine);
|
||||
hoursGroup2.setName("hoursGroupName2");
|
||||
hoursGroup2.setWorkingHours(5);
|
||||
|
||||
orderLine.addHoursGroup(hoursGroup);
|
||||
|
|
|
|||
|
|
@ -40,8 +40,11 @@ import org.navalplanner.business.orders.daos.IOrderDAO;
|
|||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.ws.common.api.ConstraintViolationDTO;
|
||||
import org.navalplanner.ws.common.api.InstanceConstraintViolationsDTO;
|
||||
import org.navalplanner.ws.common.api.ResourceEnumDTO;
|
||||
import org.navalplanner.ws.orders.api.HoursGroupDTO;
|
||||
import org.navalplanner.ws.orders.api.IOrderElementService;
|
||||
import org.navalplanner.ws.orders.api.OrderDTO;
|
||||
import org.navalplanner.ws.orders.api.OrderLineDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
|
@ -179,4 +182,116 @@ public class OrderElementServiceTest {
|
|||
equalTo(previous + 1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void orderWithInvalidOrderLine() {
|
||||
int previous = orderDAO.getOrders().size();
|
||||
|
||||
OrderDTO orderDTO = new OrderDTO();
|
||||
orderDTO.name = "Order name";
|
||||
orderDTO.code = "order-code";
|
||||
orderDTO.initDate = new Date();
|
||||
|
||||
OrderLineDTO orderLineDTO = new OrderLineDTO();
|
||||
orderDTO.children.add(orderLineDTO);
|
||||
|
||||
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = orderElementService
|
||||
.addOrder(orderDTO).instanceConstraintViolationsList;
|
||||
assertThat(instanceConstraintViolationsList.size(), equalTo(1));
|
||||
|
||||
List<ConstraintViolationDTO> constraintViolations = instanceConstraintViolationsList
|
||||
.get(0).constraintViolations;
|
||||
// Mandatory fields: code, name. Check constraints:
|
||||
// checkConstraintAtLeastOneHoursGroupForEachOrderElement
|
||||
assertThat(constraintViolations.size(), equalTo(3));
|
||||
|
||||
assertThat(orderDAO.getOrders().size(), equalTo(previous));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void orderWithInvalidOrderLineWithoutHoursGroup() {
|
||||
int previous = orderDAO.getOrders().size();
|
||||
|
||||
OrderDTO orderDTO = new OrderDTO();
|
||||
orderDTO.name = "Order name";
|
||||
orderDTO.code = "order-code";
|
||||
orderDTO.initDate = new Date();
|
||||
|
||||
OrderLineDTO orderLineDTO = new OrderLineDTO();
|
||||
orderLineDTO.name = "Order line";
|
||||
orderLineDTO.code = "order-line-code";
|
||||
orderDTO.children.add(orderLineDTO);
|
||||
|
||||
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = orderElementService
|
||||
.addOrder(orderDTO).instanceConstraintViolationsList;
|
||||
assertThat(instanceConstraintViolationsList.size(), equalTo(1));
|
||||
|
||||
List<ConstraintViolationDTO> constraintViolations = instanceConstraintViolationsList
|
||||
.get(0).constraintViolations;
|
||||
// Check constraints:
|
||||
// checkConstraintAtLeastOneHoursGroupForEachOrderElement
|
||||
assertThat(constraintViolations.size(), equalTo(1));
|
||||
|
||||
assertThat(orderDAO.getOrders().size(), equalTo(previous));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void orderWithOrderLineWithInvalidHoursGroup() {
|
||||
int previous = orderDAO.getOrders().size();
|
||||
|
||||
OrderDTO orderDTO = new OrderDTO();
|
||||
orderDTO.name = "Order name";
|
||||
orderDTO.code = "order-code";
|
||||
orderDTO.initDate = new Date();
|
||||
|
||||
OrderLineDTO orderLineDTO = new OrderLineDTO();
|
||||
orderLineDTO.name = "Order line";
|
||||
orderLineDTO.code = "order-line-code";
|
||||
HoursGroupDTO hoursGroupDTO = new HoursGroupDTO();
|
||||
hoursGroupDTO.resourceType = ResourceEnumDTO.WORKER;
|
||||
orderLineDTO.hoursGroups.add(hoursGroupDTO);
|
||||
orderDTO.children.add(orderLineDTO);
|
||||
|
||||
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = orderElementService
|
||||
.addOrder(orderDTO).instanceConstraintViolationsList;
|
||||
assertThat(instanceConstraintViolationsList.size(), equalTo(1));
|
||||
|
||||
List<ConstraintViolationDTO> constraintViolations = instanceConstraintViolationsList
|
||||
.get(0).constraintViolations;
|
||||
// Mandatory fields: name, workingHours
|
||||
assertThat(constraintViolations.size(), equalTo(2));
|
||||
for (ConstraintViolationDTO constraintViolationDTO : constraintViolations) {
|
||||
assertThat(constraintViolationDTO.fieldName, anyOf(
|
||||
equalTo("HoursGroup::name"),
|
||||
equalTo("HoursGroup::workingHours")));
|
||||
}
|
||||
|
||||
assertThat(orderDAO.getOrders().size(), equalTo(previous));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validOrderWithOrderLine() {
|
||||
String code = "order-code";
|
||||
int previous = orderElementDAO.findByCode(code).size();
|
||||
|
||||
OrderDTO orderDTO = new OrderDTO();
|
||||
orderDTO.name = "Order name";
|
||||
orderDTO.code = code;
|
||||
orderDTO.initDate = new Date();
|
||||
|
||||
OrderLineDTO orderLineDTO = new OrderLineDTO();
|
||||
orderLineDTO.name = "Order line";
|
||||
orderLineDTO.code = "order-line-code";
|
||||
HoursGroupDTO hoursGroupDTO = new HoursGroupDTO("hours-group",
|
||||
ResourceEnumDTO.WORKER, 1000);
|
||||
orderLineDTO.hoursGroups.add(hoursGroupDTO);
|
||||
orderDTO.children.add(orderLineDTO);
|
||||
|
||||
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = orderElementService
|
||||
.addOrder(orderDTO).instanceConstraintViolationsList;
|
||||
assertThat(instanceConstraintViolationsList.size(), equalTo(0));
|
||||
|
||||
assertThat(orderElementDAO.findByCode(code).size(),
|
||||
equalTo(previous + 1));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue