fixing problems regarding lucene search after merge - one test still failing
[cdmlib.git] / cdmlib-services / src / test / java / eu / etaxonomy / cdm / api / service / TermServiceImplTest.java
index 253a6a1ee564617eeab8fc12a0ea2d4c284c9d77..7b11b731f94ed750640b607f3b0f62d7e63747ce 100644 (file)
@@ -12,24 +12,34 @@ package eu.etaxonomy.cdm.api.service;
 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.Set;\r
 import java.util.UUID;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.junit.Ignore;\r
 import org.junit.Test;\r
+import org.unitils.dbunit.annotation.DataSet;\r
+import org.unitils.dbunit.annotation.DataSets;\r
 import org.unitils.spring.annotation.SpringBeanByType;\r
 \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.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.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
+import eu.etaxonomy.cdm.test.unitils.CleanSweepInsertLoadStrategy;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -46,6 +56,9 @@ public class TermServiceImplTest extends CdmTransactionalIntegrationTest{
     @SpringBeanByType\r
     private IVocabularyService vocabularyService;\r
 \r
+    @SpringBeanByType\r
+    private ITaxonService taxonService;\r
+\r
 /* ************************* TESTS *************************************************/\r
 \r
     /**\r
@@ -80,7 +93,7 @@ public class TermServiceImplTest extends CdmTransactionalIntegrationTest{
     }\r
 \r
     /**\r
-     * Test method for {@link eu.etaxonomy.cdm.api.service.TermServiceImpl#getTermByUuid(java.util.UUID)}.\r
+     * Test method for {@link eu.etaxonomy.cdm.api.service.TermServiceImpl#getContinentByUuid(java.util.UUID)}.\r
      */\r
     @Test\r
     /* @DataSet\r
@@ -147,21 +160,21 @@ public class TermServiceImplTest extends CdmTransactionalIntegrationTest{
      *    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
+        Pager<SpecimenTypeDesignationStatus> results = termService.page(SpecimenTypeDesignationStatus.class, null,null,null,null);\r
         assertNotNull("Results should not be null",results);\r
     }\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
+\r
        // change label\r
        String expectedTitleCache = termBase.getLabel() + "append";\r
        termBase.setLabel(expectedTitleCache);\r
-       \r
+\r
        commitAndStartNewTransaction(null);\r
 \r
        termBase = termService.find(fromString);\r
@@ -172,15 +185,78 @@ public class TermServiceImplTest extends CdmTransactionalIntegrationTest{
        Representation representation = termBase.getRepresentation(Language.DEFAULT());\r
        representation.setLabel(expecteTitleCacheAfterRepresentationChange);\r
        termBase.addRepresentation(representation);\r
-       \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
+\r
        commitAndStartNewTransaction(null);\r
-       \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
+\r
+    @Test\r
+    @DataSets({\r
+        @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="ClearDB_with_Terms_DataSet.xml"),\r
+        @DataSet(value="TermsDataSet-with_auditing_info.xml")\r
+    })\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
+       vocs= 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).getUuid();\r
+\r
+       voc = vocabularyService.find(vocUUID);\r
+       Set<DefinedTerm> terms = voc.getTerms();\r
+       DefinedTermBase termBase =terms.iterator().next();\r
+       UUID termUUID = termBase.getUuid();\r
+       termService.delete(termBase, null);\r
+       //commitAndStartNewTransaction(tableNames);\r
+       termBase =  termService.load(termUUID);\r
+       assertNull(termBase);\r
+\r
+\r
+       //TermVocabulary<DefinedTerm> voc = TermVocabulary.NewInstance(TermType.Feature, "TestFeatures", null, null, null);\r
+        voc.addTerm(DefinedTerm.NewDnaMarkerInstance("test", "marker", "t"));\r
+        vocUUID = vocabularyService.save(voc).getUuid();\r
+\r
+        voc = vocabularyService.find(vocUUID);\r
+        terms = voc.getTerms();\r
+        termBase =terms.iterator().next();\r
+        termUUID = termBase.getUuid();\r
+        termBase = termService.load(termUUID);\r
+        BotanicalName testName = BotanicalName.NewInstance(Rank.SPECIES());\r
+        Taxon testTaxon = Taxon.NewInstance(testName,null);\r
+        testTaxon.addIdentifier("Test", (DefinedTerm) termBase);\r
+        taxonService.save(testTaxon);\r
+        termService.delete(termBase, null);\r
+        //commitAndStartNewTransaction(tableNames);\r
+        termBase =  termService.load(termUUID);\r
+        assertNotNull(termBase);\r
+    }\r
+\r
+    /* (non-Javadoc)\r
+     * @see eu.etaxonomy.cdm.test.integration.CdmIntegrationTest#createTestData()\r
+     */\r
+    @Override\r
+    public void createTestDataSet() throws FileNotFoundException {\r
+        // TODO Auto-generated method stub\r
+\r
+    }\r
+\r
 }\r