X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/bf1f7581a6af156cd612ea0b0ba1e898b4dba21e..ba0d3ae0e81cd4948cf3438dae30f36cf922664b:/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportTest.java diff --git a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportTest.java b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportTest.java index a2bee2336d..511eae16ae 100644 --- a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportTest.java +++ b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportTest.java @@ -23,11 +23,9 @@ import java.util.List; import java.util.Set; import java.util.UUID; -import junit.framework.Assert; - import org.apache.log4j.Logger; +import org.junit.Assert; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.unitils.dbunit.annotation.DataSet; import org.unitils.spring.annotation.SpringBeanByName; @@ -36,10 +34,13 @@ import org.unitils.spring.annotation.SpringBeanByType; import eu.etaxonomy.cdm.api.service.IClassificationService; import eu.etaxonomy.cdm.api.service.INameService; import eu.etaxonomy.cdm.api.service.ITaxonService; +import eu.etaxonomy.cdm.api.service.ITermService; import eu.etaxonomy.cdm.io.common.CdmApplicationAwareDefaultImport; import eu.etaxonomy.cdm.io.common.IImportConfigurator; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.DescriptionElementSource; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.common.LanguageString; import eu.etaxonomy.cdm.model.description.CommonTaxonName; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.Feature; @@ -47,11 +48,11 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription; import eu.etaxonomy.cdm.model.description.TextData; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; import eu.etaxonomy.cdm.model.name.NonViralName; +import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.model.taxon.Classification; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.cdm.model.taxon.TaxonNode; import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest; @@ -65,7 +66,7 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{ private static final Logger logger = Logger.getLogger(NormalExplicitImportTest.class); @SpringBeanByName - CdmApplicationAwareDefaultImport defaultImport; + CdmApplicationAwareDefaultImport defaultImport; @SpringBeanByType INameService nameService; @@ -73,6 +74,9 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{ @SpringBeanByType ITaxonService taxonService; + @SpringBeanByType + ITermService termService; + @SpringBeanByType IClassificationService classificationService; @@ -84,13 +88,13 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{ String inputFile = "/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportTest-input.xls"; URL url = this.getClass().getResource(inputFile); assertNotNull("URL for the test file '" + inputFile + "' does not exist", url); - configurator = NormalExplicitImportConfigurator.NewInstance(url.toURI(), null, NomenclaturalCode.ICBN); + configurator = NormalExplicitImportConfigurator.NewInstance(url.toURI(), null, NomenclaturalCode.ICBN, null); assertNotNull("Configurator could not be created", configurator); inputFile = "/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportTest.testUuid-input.xls"; url = this.getClass().getResource(inputFile); assertNotNull("URL for the test file '" + inputFile + "' does not exist", url); - uuidConfigurator = NormalExplicitImportConfigurator.NewInstance(url.toURI(), null, NomenclaturalCode.ICBN); + uuidConfigurator = NormalExplicitImportConfigurator.NewInstance(url.toURI(), null, NomenclaturalCode.ICBN, null); assertNotNull("Configurator could not be created", configurator); } @@ -103,7 +107,6 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{ @Test @DataSet - @Ignore //does run standalone, but not in suite (maven) public void testDoInvoke() { //printDataSet(System.out); boolean result = defaultImport.invoke(configurator); @@ -140,7 +143,7 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{ Set synonyms = noctuaPronubaTaxon.getSynonyms(); assertEquals("Number of synonyms should be 1", 1, synonyms.size()); Synonym synonym = synonyms.iterator().next(); - assertEquals("Synonym name should be ", "Noctua atlantica", ((NonViralName)synonym.getName()).getNameCache()); + assertEquals("Synonym name should be ", "Noctua atlantica", ((NonViralName)synonym.getName()).getNameCache()); Set descriptions = noctuaPronubaTaxon.getDescriptions(); Assert.assertEquals("Number of descriptions should be 1", 1, descriptions.size()); TaxonDescription taxonDescription = descriptions.iterator().next(); @@ -161,39 +164,96 @@ public class NormalExplicitImportTest extends CdmTransactionalIntegrationTest{ @Test @DataSet(value="NormalExplicitImportTest.testUuid.xml") - @Ignore //does run standalone, but not in suite (maven) public void testUUID() throws URISyntaxException{ UUID taxonUuid = UUID.fromString("aafce7fe-0c5f-42ed-814b-4c7c2c715660"); + UUID synonymUuid = UUID.fromString("fc4a995b-37a9-4984-afe6-e352c6c04d92"); + + //test data set - assertEquals("Number of taxa should be 1", 1, taxonService.count(null)); + assertEquals("Number of taxon bases should be 2", 2, taxonService.count(null)); Taxon taxon = (Taxon)taxonService.find(taxonUuid); assertNotNull("Taxon with given uuid should exist", taxon); assertEquals("Taxon should have no description", 0, taxon.getDescriptions().size()); + Synonym synonym = (Synonym)taxonService.find(synonymUuid); + assertNotNull("Synonym with given uuid should exist", synonym); + assertEquals("Synonym should have 1 accepted taxon", 1, synonym.getAcceptedTaxa().size()); + //import boolean result = defaultImport.invoke(uuidConfigurator); //test result assertTrue("Return value for import.invoke should be true", result); - assertEquals("Number of taxon names should be 1", 1, nameService.count(null)); - assertEquals("Number of taxa should be 1", 1, taxonService.count(null)); + assertEquals("Number of taxon names should be 2", 2, nameService.count(null)); + assertEquals("Number of taxa should be 2", 2, taxonService.count(null)); taxon = (Taxon)taxonService.find(taxonUuid); assertEquals("Taxon should have 1 description", 1, taxon.getDescriptions().size()); TaxonDescription description = taxon.getDescriptions().iterator().next(); - assertEquals("Number of description elements should be 1", 1, description.getElements().size()); - DescriptionElementBase element = description.getElements().iterator().next(); - assertEquals("Element should be of class TextData", TextData.class, element.getClass()); - TextData textData = (TextData)element; + assertEquals("Number of description elements should be 2", 2, description.getElements().size()); + + String expectedText = "Description for the first taxon"; + TextData textData = getTextElement(description, expectedText); + assertNotNull("The element should exists", textData); Feature feature = textData.getFeature(); assertEquals("Unexpected feature", Feature.DESCRIPTION(), feature); - String text = textData.getText(Language.DEFAULT()); - String expected = "Description for the first taxon"; - assertEquals("Unexpected description text", expected, text); + assertEquals("There should be exactly 1 language", 1,textData.getMultilanguageText().size()); + Language language = textData.getMultilanguageText().keySet().iterator().next(); + assertEquals("Language should be German", Language.GERMAN(), language); + String text = textData.getText(language); + assertEquals("Unexpected description text", expectedText, text); assertEquals("Number of source elements should be 1", 1, textData.getSources().size()); DescriptionElementSource source = textData.getSources().iterator().next(); - Reference ref = source.getCitation(); + Reference ref = source.getCitation(); assertNotNull("Citation should not be null", ref); assertNotNull("AuthorTeam should not be null", ref.getAuthorTeam()); assertEquals("Source author should be 'Meyer et. al.'", "Meyer et. al.",ref.getAuthorTeam().getTitleCache()); + assertEquals("Publication title should be 'My first book'", "My first book", ref.getTitle()); assertEquals("Publication year should be '1987'", "1987", ref.getYear()); + TaxonNameBase nameUsedInSource = source.getNameUsedInSource(); + assertNotNull("Name used in source should not be null", nameUsedInSource); + assertEquals("Name used in source title should be ", "Abies", nameUsedInSource.getTitleCache()); + + + //synonym + expectedText = "A synonym description"; + textData = getTextElement(description, expectedText); + assertNotNull("The element should exists", textData); + feature = textData.getFeature(); + assertEquals("Unexpected feature", Feature.DESCRIPTION(), feature); + assertEquals("There should be exactly 1 language", 1,textData.getMultilanguageText().size()); + language = textData.getMultilanguageText().keySet().iterator().next(); + assertEquals("Language should be Spanish", Language.SPANISH_CASTILIAN(), language); + text = textData.getText(language); + assertEquals("Unexpected description text", expectedText, text); + assertEquals("Number of source elements should be 1", 1, textData.getSources().size()); + source = textData.getSources().iterator().next(); + ref = source.getCitation(); + assertNotNull("Citation should not be null", ref); + assertNotNull("AuthorTeam should not be null", ref.getAuthorTeam()); + assertEquals("Source author should be 'Theys, A.'", "Theys, A.",ref.getAuthorTeam().getTitleCache()); + assertEquals("Publication title should be 'The ultimate book'", "The ultimate book", ref.getTitle()); + assertEquals("Publication year should be '2011'", "2011", ref.getYear()); + nameUsedInSource = source.getNameUsedInSource(); + assertNotNull("Name used in source should not be null", nameUsedInSource); + assertEquals("Name used in source title should be Pinus", "Pinus", nameUsedInSource.getTitleCache()); } -} + + /** + * Returns description element for record id 1 + * @param description + * @return + */ + private TextData getTextElement(TaxonDescription description, String descriptionText) { + for (DescriptionElementBase element : description.getElements()){ + if (element.isInstanceOf(TextData.class)){ + TextData textData = CdmBase.deproxy(element, TextData.class); + for (LanguageString ls :textData.getMultilanguageText().values()){ + if (ls.getText().equals(descriptionText)){ + return textData; + } + } + } + } + return null; + } + +} \ No newline at end of file