From 523aa46263ab105d2aaf34c3a295cb506f0d0bb4 Mon Sep 17 00:00:00 2001 From: Fernando Bellas Permuy Date: Wed, 30 Dec 2009 15:26:50 +0100 Subject: [PATCH] ItEr41S15CUImportacionRecursosProductivosItEr40S20: Resource validations propagaged to CriterionSatisfactions. @Valid has been specified in Resource::getCriterionSatisfactions. A test case has been added to verify a validation constraint is generated when a resource containing a criterion satisfaction without start date is being imported with the REST service (@Valid annotation is necessary). --- .../business/resources/entities/Resource.java | 2 ++ .../ws/resources/api/ResourceServiceTest.java | 33 +++++++++++++++++++ scripts/rest-clients/resources-sample.xml | 10 ++++++ 3 files changed, 45 insertions(+) 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 @@ + + + + + + +