+ \r
+ @Test\r
+ @DataSet(value="NormalExplicitImportTest.testUuid.xml")\r
+ public void testUUID() throws URISyntaxException{\r
+ UUID taxonUuid = UUID.fromString("aafce7fe-0c5f-42ed-814b-4c7c2c715660");\r
+ UUID synonymUuid = UUID.fromString("fc4a995b-37a9-4984-afe6-e352c6c04d92");\r
+ \r
+ \r
+ //test data set\r
+ assertEquals("Number of taxon bases should be 2", 2, taxonService.count(null));\r
+ Taxon taxon = (Taxon)taxonService.find(taxonUuid);\r
+ assertNotNull("Taxon with given uuid should exist", taxon);\r
+ assertEquals("Taxon should have no description", 0, taxon.getDescriptions().size());\r
+ Synonym synonym = (Synonym)taxonService.find(synonymUuid);\r
+ assertNotNull("Synonym with given uuid should exist", synonym);\r
+ assertEquals("Synonym should have 1 accepted taxon", 1, synonym.getAcceptedTaxa().size());\r
+ \r
+ //import\r
+ boolean result = defaultImport.invoke(uuidConfigurator);\r
+ //test result\r
+ assertTrue("Return value for import.invoke should be true", result);\r
+ assertEquals("Number of taxon names should be 2", 2, nameService.count(null));\r
+ assertEquals("Number of taxa should be 2", 2, taxonService.count(null));\r
+ taxon = (Taxon)taxonService.find(taxonUuid);\r
+ assertEquals("Taxon should have 1 description", 1, taxon.getDescriptions().size());\r
+ TaxonDescription description = taxon.getDescriptions().iterator().next();\r
+ assertEquals("Number of description elements should be 2", 2, description.getElements().size());\r
+ \r
+ String expectedText = "Description for the first taxon";\r
+ TextData textData = getTextElement(description, expectedText);\r
+ assertNotNull("The element should exists", textData);\r
+ Feature feature = textData.getFeature();\r
+ assertEquals("Unexpected feature", Feature.DESCRIPTION(), feature);\r
+ assertEquals("There should be exactly 1 language", 1,textData.getMultilanguageText().size());\r
+ Language language = textData.getMultilanguageText().keySet().iterator().next();\r
+ assertEquals("Language should be German", Language.GERMAN(), language);\r
+ String text = textData.getText(language);\r
+ assertEquals("Unexpected description text", expectedText, text);\r
+ assertEquals("Number of source elements should be 1", 1, textData.getSources().size());\r
+ DescriptionElementSource source = textData.getSources().iterator().next();\r
+ Reference<?> ref = source.getCitation();\r
+ assertNotNull("Citation should not be null", ref);\r
+ assertNotNull("AuthorTeam should not be null", ref.getAuthorTeam());\r
+ assertEquals("Source author should be 'Meyer et. al.'", "Meyer et. al.",ref.getAuthorTeam().getTitleCache());\r
+ assertEquals("Publication title should be 'My first book'", "My first book", ref.getTitle());\r
+ assertEquals("Publication year should be '1987'", "1987", ref.getYear());\r
+ TaxonNameBase<?,?> nameUsedInSource = source.getNameUsedInSource();\r
+ assertNotNull("Name used in source should not be null", nameUsedInSource);\r
+ assertEquals("Name used in source title should be ", "Abies", nameUsedInSource.getTitleCache());\r
+ \r
+ \r
+ //synonym\r
+ expectedText = "A synonym description";\r
+ textData = getTextElement(description, expectedText);\r
+ assertNotNull("The element should exists", textData);\r
+ feature = textData.getFeature();\r
+ assertEquals("Unexpected feature", Feature.DESCRIPTION(), feature);\r
+ assertEquals("There should be exactly 1 language", 1,textData.getMultilanguageText().size());\r
+ language = textData.getMultilanguageText().keySet().iterator().next();\r
+ assertEquals("Language should be Spanish", Language.SPANISH_CASTILIAN(), language);\r
+ text = textData.getText(language);\r
+ assertEquals("Unexpected description text", expectedText, text);\r
+ assertEquals("Number of source elements should be 1", 1, textData.getSources().size());\r
+ source = textData.getSources().iterator().next();\r
+ ref = source.getCitation();\r
+ assertNotNull("Citation should not be null", ref);\r
+ assertNotNull("AuthorTeam should not be null", ref.getAuthorTeam());\r
+ assertEquals("Source author should be 'Theys, A.'", "Theys, A.",ref.getAuthorTeam().getTitleCache());\r
+ assertEquals("Publication title should be 'The ultimate book'", "The ultimate book", ref.getTitle());\r
+ assertEquals("Publication year should be '2011'", "2011", ref.getYear());\r
+ nameUsedInSource = source.getNameUsedInSource();\r
+ assertNotNull("Name used in source should not be null", nameUsedInSource);\r
+ assertEquals("Name used in source title should be Pinus", "Pinus", nameUsedInSource.getTitleCache());\r
+ \r
+ }\r
+\r
+ /**\r
+ * Returns description element for record id 1\r
+ * @param description\r
+ * @return\r
+ */\r
+ private TextData getTextElement(TaxonDescription description, String descriptionText) {\r
+ for (DescriptionElementBase element : description.getElements()){\r
+ if (element.isInstanceOf(TextData.class)){\r
+ TextData textData = CdmBase.deproxy(element, TextData.class);\r
+ for (LanguageString ls :textData.getMultilanguageText().values()){\r
+ if (ls.getText().equals(descriptionText)){\r
+ return textData;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+}
\ No newline at end of file