fix test
[taxeditor.git] / eu.etaxonomy.taxeditor.test / src / test / java / eu / etaxonomy / taxeditor / session / CdmEntitySessionAwareTest.java
index d038f8e8cec73bf662ca9241eb508a0adb3c8cf3..b208a99641354d2c2b0274982429df34f75d1dda 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.session;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -24,6 +25,7 @@ import org.junit.Test;
 import org.unitils.dbunit.annotation.DataSet;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.ICommonService;
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
@@ -31,6 +33,7 @@ import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IUserService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.common.CdmBase;
@@ -341,11 +344,31 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
 
 
         PolytomousKeyNode rootNode = pKey.getRoot();
-        PolytomousKeyNode child = rootNode.getChildAt(0);
-        PolytomousKey subKey = child.getSubkey();
+        PolytomousKeyNode childNode = rootNode.getChildAt(0);
+        PolytomousKey subKey = HibernateProxyHelper.deproxy( childNode.getSubkey(), PolytomousKey.class);;
+
+
+        DeleteResult result = polytomousKeyService.delete(subKey.getUuid());
+        //A used subKey can't be deleted
+        if (result.isOk()){
+            Assert.fail();
+        }
 
-        polytomousKeyService.delete(subKey.getUuid());
 
+        Set<Integer> ids = new HashSet<Integer>();
+        ids.add(2753);
+        ids.add(2754);
+        ids.add(2751);
+        List<PolytomousKeyNode> nodes = polytomousKeyNodeService.findById(ids);
+        for (PolytomousKeyNode child:nodes){
+            child.setSubkey(null);
+           // polytomousKeyNodeService.merge(child);
+        }
+        polytomousKeyNodeService.merge(nodes, true);
+        result = polytomousKeyService.delete(subKey.getUuid());
+        if (!result.isOk()){
+            Assert.fail();
+        }
         // retrieving subkey shows its null
         subKey = CdmBase.deproxy(polytomousKeyService.find(subKeyUuid),PolytomousKey.class);
         Assert.assertNull(subKey);
@@ -353,14 +376,6 @@ public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
         pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
 
 
-        rootNode = pKey.getRoot();
-        child = rootNode.getChildAt(0);
-        subKey = child.getSubkey();
-        // subkey will not be null, because the delete functionality of the subkey
-        // does not currently delete it from a polytomous key node
-
-        // FIXME: With the new delete functionality this should be null, shouldn't it ?
-        Assert.assertNotNull(subKey);
     }