From 60b32e852c21aedd61ecbafcd4ab8975e3134809 Mon Sep 17 00:00:00 2001 From: Fernando Bellas Permuy Date: Thu, 19 Nov 2009 11:20:12 +0100 Subject: [PATCH] ItEr35S11ArquitecturaServidorItEr34S11: Improvements to CriterionServiceTest. General improvements and a new test case (testAddCriterionTypeThatAlreadyExistsInDB). --- .../criterion/api/CriterionServiceTest.java | 105 ++++++++++++++---- 1 file changed, 82 insertions(+), 23 deletions(-) diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/criterion/api/CriterionServiceTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/criterion/api/CriterionServiceTest.java index e1833a4a8..269393a97 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/criterion/api/CriterionServiceTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/criterion/api/CriterionServiceTest.java @@ -1,6 +1,6 @@ package org.navalplanner.web.test.ws.resources.criterion.api; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE; import static org.navalplanner.web.WebappGlobalNames.WEBAPP_SPRING_CONFIG_FILE; @@ -8,18 +8,22 @@ import static org.navalplanner.web.test.WebappGlobalNames.WEBAPP_SPRING_CONFIG_T import java.util.ArrayList; import java.util.List; +import java.util.UUID; -import org.junit.AfterClass; -import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; +import org.navalplanner.business.common.IAdHocTransactionService; +import org.navalplanner.business.common.IOnTransaction; +import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.ws.common.api.InstanceConstraintViolationsDTO; +import org.navalplanner.ws.common.api.InstanceConstraintViolationsListDTO; import org.navalplanner.ws.resources.criterion.api.CriterionDTO; import org.navalplanner.ws.resources.criterion.api.CriterionTypeDTO; import org.navalplanner.ws.resources.criterion.api.CriterionTypeListDTO; import org.navalplanner.ws.resources.criterion.api.ICriterionService; import org.navalplanner.ws.resources.criterion.api.ResourceEnumDTO; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.NotTransactional; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; @@ -35,21 +39,12 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class CriterionServiceTest { + @Autowired + private IAdHocTransactionService transactionService; + @Autowired private ICriterionService criterionService; - @BeforeClass - public static void populateDb() throws Throwable { - } - - @AfterClass - public static void cleanDb() throws Throwable { - } - - /** - * Tests ICriterionService:addCriterionTypes (indirectly, - * ICriterionService:getCriterionTypes is also tested). - */ @Test public void testAddCriterionTypes() { @@ -76,7 +71,8 @@ public class CriterionServiceTest { ct1Criterions.add(ct1c2); ct1Criterions.add(ct1c3); ct1Criterions.add(ct1c4); - CriterionTypeDTO ct1 = new CriterionTypeDTO(null, "ct-1 desc", + String ct1Name = null; + CriterionTypeDTO ct1 = new CriterionTypeDTO(ct1Name, "desc", false, true, true, ResourceEnumDTO.RESOURCE, // Missing criterion ct1Criterions); // type name. @@ -93,7 +89,8 @@ public class CriterionServiceTest { List ct2Criterions = new ArrayList(); ct2Criterions.add(ct2c1); ct2Criterions.add(ct2c2); - CriterionTypeDTO ct2 = new CriterionTypeDTO("ct-2", "ct-2 desc", + String ct2Name = getUniqueName(); + CriterionTypeDTO ct2 = new CriterionTypeDTO(ct2Name, "desc", true, true, false, ResourceEnumDTO.RESOURCE, ct2Criterions); /* Build criterion type "ct3" (OK). */ @@ -108,7 +105,8 @@ public class CriterionServiceTest { List ct3Criterions = new ArrayList(); ct3Criterions.add(ct3c1); ct3Criterions.add(ct3c2); - CriterionTypeDTO ct3 = new CriterionTypeDTO("ct-3", "ct-3 desc", + String ct3Name = getUniqueName(); + CriterionTypeDTO ct3 = new CriterionTypeDTO(ct3Name, "desc", true, true, true, ResourceEnumDTO.RESOURCE, ct3Criterions); /* Build criterion type "ct4" (2 constraint violations). */ @@ -119,9 +117,10 @@ public class CriterionServiceTest { List ct4Criterions = new ArrayList(); ct4Criterions.add(ct4c1); ct4Criterions.add(ct4c2); - CriterionTypeDTO ct4 = new CriterionTypeDTO("ct-3", // Repeated - "ct-4 desc", true, true, true, // criterion type - ResourceEnumDTO.RESOURCE, ct4Criterions); // name. + CriterionTypeDTO ct4 = // Repeated criterion + new CriterionTypeDTO(ct3Name, // type name (see previous + "desc", true, true, true, // criterion type). + ResourceEnumDTO.RESOURCE, ct4Criterions); /* Criterion type list. */ List criterionTypes = @@ -148,8 +147,68 @@ public class CriterionServiceTest { List returnedCriterionTypes = criterionService.getCriterionTypes().criterionTypes; - assertTrue(returnedCriterionTypes.size() == 1); - assertEquals(returnedCriterionTypes.get(0).name, "ct-3"); + assertFalse(containsCriterionType(returnedCriterionTypes, ct1Name)); + assertFalse(containsCriterionType(returnedCriterionTypes, ct2Name)); + assertTrue(containsCriterionType(returnedCriterionTypes, ct3Name)); + + } + + @Test + @NotTransactional + public void testAddCriterionTypeThatAlreadyExistsInDB() + throws InstanceNotFoundException { + + final String criterionTypeName = getUniqueName(); + + IOnTransaction + createCriterionType = + new IOnTransaction() { + + @Override + public InstanceConstraintViolationsListDTO execute() { + + CriterionTypeDTO criterionType = new CriterionTypeDTO( + criterionTypeName, "desc", true, true, true, + ResourceEnumDTO.RESOURCE, new ArrayList()); + List criterionTypes = + new ArrayList(); + + criterionTypes.add(criterionType); + + return criterionService.addCriterionTypes( + new CriterionTypeListDTO(criterionTypes)); + + } + }; + + List instanceConstraintViolationsList = + transactionService.runOnTransaction( + createCriterionType). + instanceConstraintViolationsList; + assertTrue(instanceConstraintViolationsList.size() == 0); + + instanceConstraintViolationsList = + transactionService.runOnTransaction( + createCriterionType). + instanceConstraintViolationsList; + assertTrue(instanceConstraintViolationsList.size() == 1); + + } + + private String getUniqueName() { + return UUID.randomUUID().toString(); + } + + private boolean containsCriterionType( + List criterionTypes, String criterionTypeName) { + + for (CriterionTypeDTO c : criterionTypes) { + if (c.name.equals(criterionTypeName)) { + return true; + } + } + + return false; }