From e321340c3ecde6dec633469e6eef75ff4740a9b5 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Wed, 24 Jul 2013 07:48:53 +0000 Subject: [PATCH] test SecurityTest.testTaxonDeleteAllow_2() adapted, changed taxonService.delete(Taxon) to taxonService.deleteTaxon(Taxon) and adapted the xml file -> Ticket #3086 add a test for the deletion of the taxondescriptions (ticket #2982) --- .../cdm/datagenerator/TaxonGenerator.java | 2 ++ .../cdm/api/service/ITaxonService.java | 2 +- .../cdm/api/service/TaxonServiceImpl.java | 8 +++---- .../cdm/api/service/SecurityTest.java | 18 ++++++++------- .../cdm/api/service/TaxonServiceImplTest.java | 22 ++++++++++++++++--- .../cdm/api/service/SecurityTest.xml | 16 ++++++++------ 6 files changed, 44 insertions(+), 24 deletions(-) diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/datagenerator/TaxonGenerator.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/datagenerator/TaxonGenerator.java index 704dffb8c7..f88844d219 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/datagenerator/TaxonGenerator.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/datagenerator/TaxonGenerator.java @@ -86,6 +86,7 @@ public class TaxonGenerator { botSpecies.setUuid(SPECIES1_NAME_UUID); Taxon childTaxon = Taxon.NewInstance(botSpecies, sec); childTaxon.setUuid(SPECIES1_UUID); + childTaxon.addDescription(getTestDescription()); Classification classification = getTestClassification("TestClassification"); classification.addParentChild(genusTaxon, childTaxon, citationRef, "456"); // childTaxon.setTaxonomicParent(genusTaxon, citationRef, "456"); @@ -135,6 +136,7 @@ public class TaxonGenerator { childTaxon2.addMisappliedName(misappliedName, citationRef, "125"); genusTaxon.addDescription(getTestDescription()); + return genusTaxon; } diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java index e7fb2bf3c8..0fbf11fcee 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonService.java @@ -162,7 +162,7 @@ public interface ITaxonService extends IIdentifiableEntityService{ * but also it is than difficult to decide how to handle other names * in the homotypic group. It is up to the implementing class to * handle this situation via an exception or in another way. - * TODO Open issue: does the old synonym need to be deleted from the database? + * * * @param synonym * the synonym to change into an accepted taxon diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java index 205e263d48..086c59ccbf 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java @@ -257,14 +257,12 @@ public class TaxonServiceImpl extends IdentifiableServiceBase acceptedName = acceptedTaxon.getName(); + TaxonNameBase acceptedName = acceptedTaxon.getName(); TaxonNameBase synonymName = synonym.getName(); HomotypicalGroup synonymHomotypicGroup = synonymName.getHomotypicalGroup(); @@ -289,7 +287,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase taxon = taxonService.load(UUID_ACHERONTINII); + Taxon taxon = (Taxon)taxonService.load(UUID_ACHERONTINII); try{ - taxonService.delete(taxon); + try { + taxonService.deleteTaxon(taxon, null, null); + } catch (ReferencedObjectUndeletableException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } commitAndStartNewTransaction(null); } catch (RuntimeException e){ securityException = findSecurityRuntimeException(e); @@ -592,7 +594,7 @@ public class SecurityTest extends CdmTransactionalIntegrationTestWithSecurity{ } Assert.assertNull("evaluation must not fail since the user is permitted, CAUSE :" + (securityException != null ? securityException.getMessage() : ""), securityException); // reload taxon - taxon = taxonService.load(UUID_ACHERONTINII); + taxon = (Taxon)taxonService.load(UUID_ACHERONTINII); Assert.assertNull("The taxon must be deleted", taxon); } diff --git a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceImplTest.java b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceImplTest.java index f6beeabf69..6bf06e51d6 100644 --- a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceImplTest.java +++ b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceImplTest.java @@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException; import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException; import eu.etaxonomy.cdm.datagenerator.TaxonGenerator; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.description.TaxonDescription; import eu.etaxonomy.cdm.model.name.BotanicalName; import eu.etaxonomy.cdm.model.name.HomotypicalGroup; import eu.etaxonomy.cdm.model.name.NameRelationship; @@ -52,6 +53,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.cdm.model.taxon.TaxonNode; import eu.etaxonomy.cdm.model.taxon.TaxonRelationship; import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType; +import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao; import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest; import eu.etaxonomy.cdm.test.unitils.CleanSweepInsertLoadStrategy; @@ -79,6 +81,11 @@ public class TaxonServiceImplTest extends CdmTransactionalIntegrationTest { @SpringBeanByType private ITaxonNodeService nodeService; + + @SpringBeanByType + private IDescriptionService descriptionService; + + @@ -1028,9 +1035,17 @@ public class TaxonServiceImplTest extends CdmTransactionalIntegrationTest { UUID uuid = service.save(testTaxon); Taxon speciesTaxon = (Taxon)service.find(TaxonGenerator.SPECIES1_UUID); - + Iterator descriptionIterator = speciesTaxon.getDescriptions().iterator(); + UUID descrUUID = null; + UUID descrElementUUID = null; + if (descriptionIterator.hasNext()){ + TaxonDescription descr = descriptionIterator.next(); + descrUUID = descr.getUuid(); + descrElementUUID = descr.getElements().iterator().next().getUuid(); + } BotanicalName taxonName = (BotanicalName) nameService.find(TaxonGenerator.SPECIES1_NAME_UUID); assertNotNull(taxonName); + TaxonDeletionConfigurator config = new TaxonDeletionConfigurator(); config.setDeleteNameIfPossible(false); try { @@ -1044,8 +1059,9 @@ public class TaxonServiceImplTest extends CdmTransactionalIntegrationTest { taxonName = (BotanicalName) nameService.find(TaxonGenerator.SPECIES1_NAME_UUID); Taxon taxon = (Taxon)service.find(TaxonGenerator.SPECIES1_UUID); - - + //descriptionService.find(descrUUID); + assertNull(descriptionService.find(descrUUID)); + assertNull(descriptionService.getDescriptionElementByUuid(descrElementUUID)); //assertNull(synName); assertNotNull(taxonName); assertNull(taxon); diff --git a/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/SecurityTest.xml b/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/SecurityTest.xml index 667a2d8e85..c6640bef3e 100644 --- a/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/SecurityTest.xml +++ b/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/SecurityTest.xml @@ -78,13 +78,13 @@ - - - - - - - + + + + + + + @@ -95,9 +95,11 @@ + + -- 2.34.1