From: Andreas Müller Date: Tue, 6 Sep 2011 12:04:36 +0000 (+0000) Subject: tests for getXXXSynonymByGroup #2552 X-Git-Tag: cdmlib-parent-3.0.7~14 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/commitdiff_plain/2f3b929a839da58cde7c30cb27c588d56065d4e9?ds=sidebyside tests for getXXXSynonymByGroup #2552 --- 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 1f8090d5e4..5bf8e0bef0 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 @@ -320,13 +320,15 @@ public interface ITaxonService extends IIdentifiableEntityService{ /** * Returns the ordered list of all {@link eu.etaxonomy.cdm.model.name.HomotypicalGroup homotypical groups} - * that contain {@link Synonym synonyms} that are heterotypic to this taxon. + * that contain {@link Synonym synonyms} that are heterotypic to the given taxon. * {@link eu.etaxonomy.cdm.model.name.TaxonNameBase Taxon names} of heterotypic synonyms * belong to a homotypical group which cannot be the homotypical group to which the - * taxon name of this taxon belongs. This method returns the same - * list as the {@link #getHomotypicSynonymyGroups() getHomotypicSynonymyGroups} method - * but without the homotypical group to which the taxon name of this taxon - * belongs.
+ * taxon name of the given taxon belongs. This method does not return the homotypic group the given + * taxon belongs to.
+ * This method does neglect the type of synonym relationship that is defined between the given taxon + * and the synonym. So the synonym relationship may be homotypic however a synonym is returned + * in one of the result lists as long as the synonym does not belong to the same homotypic group as + * the given taxon.
* The list returned is ordered according to the date of publication of the * first published name within each homotypical group. * 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 c5ace4111e..8d1de12e4b 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 @@ -12,6 +12,7 @@ package eu.etaxonomy.cdm.api.service; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import java.util.List; import java.util.UUID; import org.apache.log4j.Logger; @@ -22,6 +23,8 @@ import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.model.name.BotanicalName; import eu.etaxonomy.cdm.model.name.HomotypicalGroup; import eu.etaxonomy.cdm.model.name.Rank; +import eu.etaxonomy.cdm.model.reference.Reference; +import eu.etaxonomy.cdm.model.reference.ReferenceFactory; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType; import eu.etaxonomy.cdm.model.taxon.Taxon; @@ -135,28 +138,91 @@ public class TaxonServiceImplTest extends CdmIntegrationTest { public final void testChangeSynonymToAcceptedTaxon(){ Rank rank = Rank.SPECIES(); //HomotypicalGroup group = HomotypicalGroup.NewInstance(); - Taxon tax1 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test1", null, null, null, null, null, null, null), null); - Taxon tax2 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test3", null, null, null, null, null, null, null), null); + Taxon taxWithoutSyn = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test1", null, null, null, null, null, null, null), null); + Taxon taxWithSyn = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test3", null, null, null, null, null, null, null), null); Synonym synonym = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null); Synonym synonym2 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test4", null, null, null, null, null, null, null), null); synonym2.getName().setHomotypicalGroup(synonym.getHomotypicGroup()); //tax2.addHeterotypicSynonymName(synonym.getName()); - tax2.addSynonym(synonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); - tax2.addSynonym(synonym2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); + taxWithSyn.addSynonym(synonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); + taxWithSyn.addSynonym(synonym2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); - service.save(tax1); + service.save(taxWithoutSyn); UUID uuidSyn = service.save(synonym); service.save(synonym2); - service.save(tax2); + service.save(taxWithSyn); - Taxon taxon = service.changeSynonymToAcceptedTaxon(synonym, tax2, true, true, null, null); + Taxon taxon = service.changeSynonymToAcceptedTaxon(synonym, taxWithSyn, true, true, null, null); //test flush (resave deleted object) TaxonBase syn = service.find(uuidSyn); assertNull(syn); Assert.assertEquals("New taxon should have 1 synonym relationship (the old homotypic synonym)", 1, taxon.getSynonymRelations().size()); + } + + @Test + public final void testGetHeterotypicSynonymyGroups(){ + Rank rank = Rank.SPECIES(); + Reference ref1 = ReferenceFactory.newGeneric(); + //HomotypicalGroup group = HomotypicalGroup.NewInstance(); + Taxon taxon1 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test3", null, null, null, null, null, null, null), null); + Synonym synonym0 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null); + Synonym synonym1 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null); + Synonym synonym2 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test4", null, null, null, null, null, null, null), null); + synonym0.getName().setHomotypicalGroup(taxon1.getHomotypicGroup()); + synonym2.getName().setHomotypicalGroup(synonym1.getHomotypicGroup()); + //tax2.addHeterotypicSynonymName(synonym.getName()); + taxon1.addSynonym(synonym1, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); + taxon1.addSynonym(synonym2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); + + service.save(synonym1); + service.save(synonym2); + service.save(taxon1); + List> heteroSyns = service.getHeterotypicSynonymyGroups(taxon1, null); + Assert.assertEquals("There should be 1 heterotypic group", 1, heteroSyns.size()); + List synList = heteroSyns.get(0); + Assert.assertEquals("There should be 2 heterotypic syns in group 1", 2, synList.size()); + //test sec + synonym2.setSec(ref1); + heteroSyns = service.getHeterotypicSynonymyGroups(taxon1, null); + Assert.assertEquals("There should be 1 heterotypic group", 1, heteroSyns.size()); + synList = heteroSyns.get(0); + Assert.assertEquals("getHeterotypicSynonymyGroups should be independent of sec reference", 2, synList.size()); } + + @Test + public final void testGetHomotypicSynonymsByHomotypicGroup(){ + Rank rank = Rank.SPECIES(); + Reference ref1 = ReferenceFactory.newGeneric(); + //HomotypicalGroup group = HomotypicalGroup.NewInstance(); + Taxon taxon1 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test3", null, null, null, null, null, null, null), null); + Synonym synonym0 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null); + Synonym synonym1 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null); + Synonym synonym2 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test4", null, null, null, null, null, null, null), null); + synonym0.getName().setHomotypicalGroup(taxon1.getHomotypicGroup()); + synonym2.getName().setHomotypicalGroup(synonym1.getHomotypicGroup()); + //tax2.addHeterotypicSynonymName(synonym.getName()); + taxon1.addSynonym(synonym0, SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF()); + taxon1.addSynonym(synonym1, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); + taxon1.addSynonym(synonym2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()); + + service.save(synonym1); + service.save(synonym2); + service.save(taxon1); + + List homoSyns = service.getHomotypicSynonymsByHomotypicGroup(taxon1, null); + Assert.assertEquals("There should be 1 heterotypic group", 1, homoSyns.size()); + Assert.assertSame("The homotypic synonym should be synonym0", synonym0, homoSyns.get(0)); + + //test sec + synonym0.setSec(ref1); + homoSyns = service.getHomotypicSynonymsByHomotypicGroup(taxon1, null); + Assert.assertEquals("getHeterotypicSynonymyGroups should be independent of sec reference", 1, homoSyns.size()); + + } + + }