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