diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/CriterionTypeDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/CriterionTypeDAO.java index 5c74db82c..0bdff24f6 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/CriterionTypeDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/CriterionTypeDAO.java @@ -71,7 +71,8 @@ public class CriterionTypeDAO extends GenericDAOHibernate @Override public boolean existsByName(CriterionType criterionType) { try { - return findUniqueByName(criterionType) != null; + CriterionType t = findUniqueByName(criterionType); + return t != null && t != criterionType; } catch (InstanceNotFoundException e) { return false; } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/daos/CriterionTypeDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/daos/CriterionTypeDAOTest.java index 0e306bad0..07b5d5199 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/daos/CriterionTypeDAOTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/daos/CriterionTypeDAOTest.java @@ -79,12 +79,21 @@ public class CriterionTypeDAOTest { assertTrue(criterionTypeDAO.exists(criterionType.getId())); } - @Test(expected=ValidationException.class) + @Test + public void testCriterionTypeCanBeSavedTwice() throws ValidationException { + CriterionType criterionType = createValidCriterionType(); + criterionTypeDAO.save(criterionType); + criterionTypeDAO.save(criterionType); + assertTrue(criterionTypeDAO.exists(criterionType.getId()) + || criterionTypeDAO.existsByName(criterionType)); + } + + @Test(expected = ValidationException.class) public void testCannotSaveTwoDifferentCriterionTypesWithTheSameName() throws ValidationException { - CriterionType criterionType = createValidCriterionType("bla",""); + CriterionType criterionType = createValidCriterionType("bla", ""); criterionTypeDAO.save(criterionType); - criterionType = createValidCriterionType("bla",""); + criterionType = createValidCriterionType("bla", ""); criterionTypeDAO.save(criterionType); } @@ -145,4 +154,5 @@ public class CriterionTypeDAOTest { assertTrue(numberOfCriterionsOfTypeResourceAndWorker >= numberOfCriterionsOfTypeResource); } + }