Author: michiel
Date: 2010-03-22 17:25:06 +0100 (Mon, 22 Mar 2010)
New Revision: 41561

Added:
   
mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/CloneUtilTest.java
Modified:
   
mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java
Log:
test case for CloneUtil

Added: 
mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/CloneUtilTest.java
===================================================================
--- 
mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/CloneUtilTest.java
                             (rev 0)
+++ 
mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/CloneUtilTest.java
     2010-03-22 16:25:06 UTC (rev 41561)
@@ -0,0 +1,92 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+
+package org.mmbase.bridge.util;
+
+import org.mmbase.bridge.*;
+import org.mmbase.bridge.mock.*;
+import org.mmbase.datatypes.*;
+import org.mmbase.storage.search.*;
+import java.util.*;
+import org.junit.*;
+import static org.junit.Assert.*;
+import static org.junit.Assume.*;
+
+
+/**
+   *
+ * @author Michiel Meeuwissen
+ * @version $Id: QueriesTest.java 40323 2010-01-04 13:43:05Z michiel $
+ */
+public class CloneUtilTest {
+
+    private static final String REMOTE_URI = 
"rmi://127.0.0.1:1111/exampleremotecontext";
+    private static Cloud remoteCloud;
+
+
+    @BeforeClass
+    public static void setup() throws Exception {
+        //MockCloudContext.getInstance().addCore();
+        
//MockCloudContext.getInstance().addNodeManagers(MockBuilderReader.getBuilderLoader().getChildResourceLoader("mynews"));
+        try {
+            CloudContext c =  ContextProvider.getCloudContext(REMOTE_URI);
+            remoteCloud = c.getCloud("mmbase", "class", null);
+            System.out.println("Found remote cloud " + remoteCloud);
+        } catch (Exception e) {
+            System.err.println("Cannot get RemoteCloud. (" + e.getMessage() + 
"). Some tests will be skipped. (but reported as succes: see 
http://jira.codehaus.org/browse/SUREFIRE-542)");
+            System.err.println("You can start up a test-environment for remote 
tests: trunk/example-webapp$ mvn jetty:run");
+            remoteCloud = null;
+        }
+    }
+
+
+
+
+    @Test
+    public void cloneRelation() {
+        assumeNotNull(remoteCloud);
+        Node mag = remoteCloud.getNode("default.mags");
+
+        {
+            Relation rel = mag.getRelations("posrel", "news").get(0);
+            Node news = rel.getDestination();
+            assertEquals("news", news.getNodeManager().getName());
+
+            Node clone = CloneUtil.cloneNode(news);
+            assertEquals("news", clone.getNodeManager().getName());
+            clone.commit();
+            int number = clone.getNumber();
+            System.out.println("Created " + number);
+            assertTrue(number > 0);
+            Relation relClone = CloneUtil.cloneRelation(rel);
+            relClone.setDestination(clone);
+            assertEquals(number, relClone.getDestination().getNumber());
+            relClone.commit();
+            assertEquals(number, relClone.getDestination().getNumber());
+        }
+        {
+            Node clone = CloneUtil.cloneNode(mag);
+            clone.setValue("title", "clone of " + mag.getStringValue("title"));
+            clone.commit();
+            System.out.println("Created " + clone.getNumber());
+            RelationIterator news = mag.getRelations("posrel", 
remoteCloud.getNodeManager("news"), "destination").relationIterator();
+            while (news.hasNext()) {
+                Relation rel = news.nextRelation();
+                Relation relclone = CloneUtil.cloneRelation(rel);
+                relclone.setSource(clone);
+                assertEquals(relclone.getIntValue("snumber"),  
clone.getNumber());
+                relclone.commit();
+                assertEquals(relclone.getIntValue("snumber"), 
clone.getNumber());
+                System.out.println("Created " + 
relclone.getFunctionValue("gui", null));
+            }
+            assertEquals(mag.countRelations(), clone.countRelations());
+        }
+    }
+}

Modified: 
mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java
===================================================================
--- 
mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java
       2010-03-22 15:15:52 UTC (rev 41560)
+++ 
mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java
       2010-03-22 16:25:06 UTC (rev 41561)
@@ -205,6 +205,7 @@
         NodeQuery q = Queries.createRelatedNodesQuery(node, 
cloud.getNodeManager("news"), "posrel", "destination");
         String before = q.toSql();
         List<SortOrder> sos = Queries.addSortOrders(q, "posrel.pos,number", 
"UP");
+        Queries.sortUniquely(q);
         assertEquals(q.toSql() + sos, 2, sos.size());
         assertEquals("" + node.getNumber(), 
Queries.getSortOrderFieldValue(node, sos.get(1)).toString());
 
@@ -292,7 +293,7 @@
             if (pref1 != null) n1 = n1.getNodeValue(pref1 + ".number");
             if (pref2 != null) n2 = n2.getNodeValue(pref2 + ".number");
 
-            assertEquals(n1, n2);
+            assertEquals(n1.getNumber(), n2.getNumber());
         }
     }
 
@@ -308,7 +309,8 @@
 
         // implementation based on NodeQuery
         NodeQuery q = Queries.createRelatedNodesQuery(node, 
cloud.getNodeManager("news"), "posrel", "destination");
-        Queries.addSortOrders(q, "posrel.pos,number", "DOWN");
+        Queries.addSortOrders(q, "posrel.pos", "DOWN");
+        Queries.sortUniquely(q);
         List<Node> relatedNodes2 = Queries.getRelatedNodesInTransaction(node, 
q); // outside a transaction it works too
 
         System.out.println(toString(relatedNodes, "news") + " =? " + 
toString(relatedNodes2, null));

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to