diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java index 51fb106c6..36a621729 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java @@ -106,6 +106,8 @@ public abstract class Resource extends BaseEntity{ } return list; } + + @Valid public Set getCriterionSatisfactions() { Set satisfactionActives = new HashSet(); diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/api/ResourceServiceTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/api/ResourceServiceTest.java index d948732c1..a202f79af 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/api/ResourceServiceTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/api/ResourceServiceTest.java @@ -162,6 +162,39 @@ public class ResourceServiceTest { } + @Test + @NotTransactional + public void testAddResourceWithCriterionSatisfactionsWithoutStartDate() { + + /* Create a criterion type. */ + CriterionType ct = createCriterionType(); + + /* Create a resource DTO. */ + MachineDTO machineDTO = new MachineDTO(ct.getName(), "name", "desc"); + machineDTO.criterionSatisfactions.add( + new CriterionSatisfactionDTO(ct.getName() , "c1", + null, Calendar.getInstance().getTime())); // Missing start date. + + /* Test. */ + List resources = new ArrayList(); + resources.add(machineDTO); + + List instanceConstraintViolationsList = + resourceService.addResources(new ResourceListDTO(resources)). + instanceConstraintViolationsList; + + assertTrue(instanceConstraintViolationsList.size() == 1); + assertTrue(instanceConstraintViolationsList.get(0). + constraintViolations.size() == 1); + + try { + findUniqueMachineByCode(machineDTO.code); + fail("InstanceNotFoundException expected"); + } catch (InstanceNotFoundException e) { + } + + } + @Test @NotTransactional public void testAddResourceWithCriterionSatisfactionsWithIncorrectNames() { diff --git a/scripts/rest-clients/resources-sample.xml b/scripts/rest-clients/resources-sample.xml index 65cd373c0..bbe88b163 100644 --- a/scripts/rest-clients/resources-sample.xml +++ b/scripts/rest-clients/resources-sample.xml @@ -27,4 +27,14 @@ + + + + + + +