import static org.junit.Assert.assertEquals;\r
import static org.junit.Assert.assertNotNull;\r
import static org.junit.Assert.assertNull;\r
+import static org.junit.Assert.assertTrue;\r
\r
+import java.io.FileNotFoundException;\r
import java.net.URI;\r
-import java.util.List;\r
+import java.util.Set;\r
import java.util.UUID;\r
\r
+import org.junit.Assert;\r
import org.apache.log4j.Logger;\r
import org.junit.Ignore;\r
import org.junit.Test;\r
-import org.unitils.database.annotations.Transactional;\r
-import org.unitils.database.util.TransactionMode;\r
import org.unitils.dbunit.annotation.DataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
+import eu.etaxonomy.cdm.api.service.DeleteResult.DeleteStatus;\r
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;\r
import eu.etaxonomy.cdm.api.service.pager.Pager;\r
+import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.common.Representation;\r
+import eu.etaxonomy.cdm.model.common.TermType;\r
import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
import eu.etaxonomy.cdm.model.location.NamedArea;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
-import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
+import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
+import eu.etaxonomy.cdm.test.unitils.CleanSweepInsertLoadStrategy;\r
\r
/**\r
* @author a.mueller\r
* @created 27.05.2008\r
* @version 1.0\r
*/\r
-public class TermServiceImplTest extends CdmIntegrationTest {\r
- @SuppressWarnings("unused")\r
- private static final Logger logger = Logger.getLogger(TermServiceImplTest.class);\r
+public class TermServiceImplTest extends CdmTransactionalIntegrationTest{\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(TermServiceImplTest.class);\r
\r
- @SpringBeanByType\r
- private ITermService service;\r
+ @SpringBeanByType\r
+ private ITermService termService;\r
\r
- @SpringBeanByType\r
- private IVocabularyService vocabularyService;\r
+ @SpringBeanByType\r
+ private IVocabularyService vocabularyService;\r
\r
/* ************************* TESTS *************************************************/\r
\r
- /**\r
- * Test method for {@link eu.etaxonomy.cdm.api.service.TermServiceImpl#getTermByUri(java.lang.String)}.\r
- */\r
- @Ignore //second part of test throws unexpected exception & also first part fails since language(406)\r
- //is also not found here, for an explanation see comment below\r
- @Test\r
- /* @DataSet\r
- * WARNING:\r
- * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
- * and thus will cause unitils to empty the according tables, thus all terms etc will be deleted for the\r
- * following tests, thus it might be a good idea moving this test to the end\r
- */\r
- public void testGetTermByUri() {\r
- String uriStr = "http://any.uri.com";\r
- URI uri = URI.create(uriStr);\r
- DefinedTermBase<?> term = service.getByUri(uri);\r
- assertNotNull(term);\r
- //for testing only\r
+ /**\r
+ * Test method for {@link eu.etaxonomy.cdm.api.service.TermServiceImpl#getTermByUri(java.lang.String)}.\r
+ */\r
+ @Ignore //second part of test throws unexpected exception & also first part fails since language(406)\r
+ //is also not found here, for an explanation see comment below\r
+ @Test\r
+ /* @DataSet\r
+ * WARNING:\r
+ * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
+ * and thus will cause unitils to empty the according tables, thus all terms etc will be deleted for the\r
+ * following tests, thus it might be a good idea moving this test to the end\r
+ */\r
+ public void testGetTermByUri() {\r
+ String uriStr = "http://any.uri.com";\r
+ URI uri = URI.create(uriStr);\r
+ DefinedTermBase<?> term = termService.getByUri(uri);\r
+ assertNotNull(term);\r
+ //for testing only\r
// TermVocabulary<?> voc = term.getVocabulary();\r
// service.saveOrUpdate(term);\r
// List<MarkerType> list = service.listByTermClass(MarkerType.class, null, null, null, null);\r
\r
- //NULL\r
- //FIXME throws object not found exception. Wants to load term.voc(11).representation(496).language(124) which does not exist\r
- //I do not understand where the vocabulary data comes from (checked persistence TermsDataSet-with_auditing_info.xml) but somehow this does not apply\r
- String uriNotExistStr = "http://www.notExisting.com";\r
- URI uriNotExist = URI.create(uriNotExistStr);\r
- DefinedTermBase<?> termNotExist = service.getByUri(uriNotExist);\r
- assertNull(termNotExist);\r
- }\r
-\r
- /**\r
- * Test method for {@link eu.etaxonomy.cdm.api.service.TermServiceImpl#getTermByUuid(java.util.UUID)}.\r
- */\r
- @Test\r
- /* @DataSet\r
- * WARNING:\r
- * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
- * and thus will cause unitils empty the according tables\r
- */\r
- public void testGetTermByUuid() {\r
- // Rank.Domain\r
- String strUUID = "ffca6ec8-8b88-417b-a6a0-f7c992aac19b";\r
- UUID uuid = UUID.fromString(strUUID);\r
- DefinedTermBase<?> term = service.find(uuid);\r
- assertNotNull(term);\r
- assertEquals(Rank.DOMAIN(), term);\r
- //NULL\r
- String strUUIDNotExist = "00000000-8b88-417b-a6a0-f7c992aac19c";\r
- UUID uuidNotExist = UUID.fromString(strUUIDNotExist);\r
- DefinedTermBase<?> termNotExist = service.find(uuidNotExist);\r
- assertNull(termNotExist);\r
- }\r
-\r
-\r
- /**\r
- * Test method for {@link eu.etaxonomy.cdm.api.service.TermServiceImpl#listTerms(java.util.UUID)}.\r
- */\r
+ //NULL\r
+ //FIXME throws object not found exception. Wants to load term.voc(11).representation(496).language(124) which does not exist\r
+ //I do not understand where the vocabulary data comes from (checked persistence TermsDataSet-with_auditing_info.xml) but somehow this does not apply\r
+ String uriNotExistStr = "http://www.notExisting.com";\r
+ URI uriNotExist = URI.create(uriNotExistStr);\r
+ DefinedTermBase<?> termNotExist = termService.getByUri(uriNotExist);\r
+ assertNull(termNotExist);\r
+ }\r
+\r
+ /**\r
+ * Test method for {@link eu.etaxonomy.cdm.api.service.TermServiceImpl#getContinentByUuid(java.util.UUID)}.\r
+ */\r
+ @Test\r
+ /* @DataSet\r
+ * WARNING:\r
+ * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
+ * and thus will cause unitils empty the according tables\r
+ */\r
+ public void testGetTermByUuid() {\r
+ // Rank.Domain\r
+ String strUUID = "ffca6ec8-8b88-417b-a6a0-f7c992aac19b";\r
+ UUID uuid = UUID.fromString(strUUID);\r
+ DefinedTermBase<?> term = termService.find(uuid);\r
+ assertNotNull(term);\r
+ assertEquals(Rank.DOMAIN(), term);\r
+ //NULL\r
+ String strUUIDNotExist = "00000000-8b88-417b-a6a0-f7c992aac19c";\r
+ UUID uuidNotExist = UUID.fromString(strUUIDNotExist);\r
+ DefinedTermBase<?> termNotExist = termService.find(uuidNotExist);\r
+ assertNull(termNotExist);\r
+ }\r
+\r
+\r
+ /**\r
+ * Test method for {@link eu.etaxonomy.cdm.api.service.TermServiceImpl#listTerms(java.util.UUID)}.\r
+ */\r
// @Ignore\r
- @Test\r
- /* @DataSet\r
- * WARNING:\r
- * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
- * and thus will cause unitils empty the according tables\r
- */\r
- public void testGetVocabularyUUID() {\r
- //Rank\r
- String rankVocabularyUuid = "ef0d1ce1-26e3-4e83-b47b-ca74eed40b1b";\r
- UUID rankUuid = UUID.fromString(rankVocabularyUuid);\r
- TermVocabulary<Rank> voc = vocabularyService.find(rankUuid);\r
- assertNotNull(voc);\r
- assertEquals(66, voc.getTerms().size());\r
- //Null\r
- String nullVocabularyUuid = "00000000-26e3-4e83-b47b-ca74eed40b1b";\r
- UUID nullUuid = UUID.fromString(nullVocabularyUuid);\r
- TermVocabulary<Rank> nullVoc = vocabularyService.find(nullUuid);\r
- assertNull(nullVoc);\r
- }\r
-\r
-\r
- @Test\r
- /* @DataSet\r
- * WARNING:\r
- * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
- * and thus will cause unitils empty the according tables\r
- */\r
- public void testGetAreaByTdwgAbbreviation(){\r
- String tdwgAbbreviation = "GER-OO";\r
- NamedArea germany = service.getAreaByTdwgAbbreviation(tdwgAbbreviation);\r
- assertEquals(tdwgAbbreviation, germany.getRepresentation(Language.DEFAULT()).getAbbreviatedLabel());\r
- }\r
-\r
- @Test\r
- /* @DataSet\r
- * WARNING:\r
- * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
- * and thus will cause unitils empty the according tables\r
- */\r
- public void testListTerms() {\r
- Pager<SpecimenTypeDesignationStatus> results = (Pager)service.page(SpecimenTypeDesignationStatus.class, null,null,null,null);\r
- assertNotNull("Results should not be null",results);\r
- }\r
+ @Test\r
+ /* @DataSet\r
+ * WARNING:\r
+ * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
+ * and thus will cause unitils empty the according tables\r
+ */\r
+ public void testGetVocabularyUUID() {\r
+ //Rank\r
+ String rankVocabularyUuid = "ef0d1ce1-26e3-4e83-b47b-ca74eed40b1b";\r
+ UUID rankUuid = UUID.fromString(rankVocabularyUuid);\r
+ TermVocabulary<Rank> voc = vocabularyService.find(rankUuid);\r
+ assertNotNull(voc);\r
+ assertEquals(62, voc.getTerms().size());\r
+ //Null\r
+ String nullVocabularyUuid = "00000000-26e3-4e83-b47b-ca74eed40b1b";\r
+ UUID nullUuid = UUID.fromString(nullVocabularyUuid);\r
+ TermVocabulary<Rank> nullVoc = vocabularyService.find(nullUuid);\r
+ assertNull(nullVoc);\r
+ }\r
+\r
+\r
+ @Test\r
+ /* @DataSet\r
+ * WARNING:\r
+ * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
+ * and thus will cause unitils empty the according tables\r
+ */\r
+ public void testGetAreaByTdwgAbbreviation(){\r
+ String tdwgAbbreviation = "GER-OO";\r
+ NamedArea germany = termService.getAreaByTdwgAbbreviation(tdwgAbbreviation);\r
+ assertEquals(tdwgAbbreviation, germany.getRepresentation(Language.DEFAULT()).getAbbreviatedLabel());\r
+ }\r
+\r
+ @Test\r
+ /* @DataSet\r
+ * WARNING:\r
+ * the dataset contains records for DEFINEDTERMBASE,DEFINEDTERMBASE_REPRESENTATION and REPRESENTAION\r
+ * and thus will cause unitils empty the according tables\r
+ */\r
+ public void testListTerms() {\r
+ Pager<SpecimenTypeDesignationStatus> results = (Pager)termService.page(SpecimenTypeDesignationStatus.class, null,null,null,null);\r
+ assertNotNull("Results should not be null",results);\r
+ }\r
+ \r
+ @Ignore\r
+ @Test\r
+ public void testTitleCacheUpdate(){\r
+ String uuid = "ae787603-3070-4298-9ca6-4cbe73378122";\r
+ UUID fromString = UUID.fromString(uuid);\r
+ DefinedTermBase<?> termBase = termService.find(fromString);\r
+ \r
+ // change label\r
+ String expectedTitleCache = termBase.getLabel() + "append";\r
+ termBase.setLabel(expectedTitleCache);\r
+ \r
+ commitAndStartNewTransaction(null);\r
+\r
+ termBase = termService.find(fromString);\r
+ assertEquals("Title cache did not update after setting the label and saving the term", expectedTitleCache, termBase.getTitleCache());\r
+\r
+ // add new representation for default language\r
+ String expecteTitleCacheAfterRepresentationChange = "new label";\r
+ Representation representation = termBase.getRepresentation(Language.DEFAULT());\r
+ representation.setLabel(expecteTitleCacheAfterRepresentationChange);\r
+ termBase.addRepresentation(representation);\r
+ \r
+ //this will create another termBase in the DB which has the same UUID -> test failure\r
+// termBase.addRepresentation(Representation.NewInstance(expecteTitleCacheAfterRepresentationChange, "", "", Language.DEFAULT()));////new Representation(expecteTitleCacheAfterRepresentationChange, "", "", Language.DEFAULT()));\r
+\r
+ \r
+ commitAndStartNewTransaction(null);\r
+ \r
+ termBase = termService.find(fromString);\r
+ assertEquals("Title cache did not update after adding a new representation for default language and saving the term", expecteTitleCacheAfterRepresentationChange, termBase.getTitleCache());\r
+ }\r
+ \r
+ \r
+ @Test\r
+ public void testDeleteTerms(){\r
+ final String[] tableNames = new String[]{\r
+ "DefinedTermBase","Representation"};\r
+ \r
+ //commitAndStartNewTransaction(tableNames);\r
+ /*TermVocabulary<DefinedTerm> vocs = TermVocabulary.NewInstance(TermType.Feature, "TestFeatures", null, null, null);\r
+ vocs.addTerm(DefinedTerm.NewInstance(TermType.State, "green", "green", "gn"));\r
+ UUID vocUUIDs = vocabularyService.save(vocs);*/\r
+ Pager<DefinedTermBase> term = termService.findByRepresentationText("green", DefinedTermBase.class, null, null);\r
+ if (term.getCount() != 0){\r
+ \r
+ DeleteResult result = termService.delete(term.getRecords().get(0));\r
+ assertTrue(result.isOk());\r
+ commitAndStartNewTransaction(tableNames);\r
+ }\r
+ TermVocabulary<DefinedTerm> voc = TermVocabulary.NewInstance(TermType.Feature, "TestFeatures", null, null, null);\r
+ voc.addTerm(DefinedTerm.NewDnaMarkerInstance("test", "marker", "t"));\r
+ UUID vocUUID = vocabularyService.save(voc);\r
+ \r
+ voc = (TermVocabulary)vocabularyService.find(vocUUID);\r
+ Set<DefinedTerm> terms = voc.getTerms();\r
+ DefinedTermBase termBase =(DefinedTerm)terms.iterator().next();\r
+ UUID termUUID = termBase.getUuid();\r
+ termService.delete(termBase, null);\r
+ //commitAndStartNewTransaction(tableNames);\r
+ termBase = (DefinedTerm)termService.load(termUUID);\r
+ assertNull(termBase);\r
+ \r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.test.integration.CdmIntegrationTest#createTestData()\r
+ */\r
+ @Override\r
+ protected void createTestDataSet() throws FileNotFoundException {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ \r
}\r