Author: michiel Date: 2010-01-04 14:43:05 +0100 (Mon, 04 Jan 2010) New Revision: 40323
Modified: mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java Log: backported r40315:40319 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-01-04 13:42:39 UTC (rev 40322) +++ mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java 2010-01-04 13:43:05 UTC (rev 40323) @@ -21,7 +21,7 @@ /** - * + * * @author Michiel Meeuwissen * @version $Id$ */ @@ -175,11 +175,28 @@ } + // ================================================================================ // Tests below this assume an RMMCI connection // ================================================================================ + @Test + public void addToResult() { + //Cloud cloud = getCloudContext().getCloud("mmbase"); + assumeNotNull(remoteCloud); + Cloud cloud = remoteCloud; + Node node = cloud.getNodeManager("news").createNode(); + node.setStringValue("title", "foo"); + node.commit(); + //NodeQuery q = Queries.createRelatedNodesQuery(node, otherNodeManager, role, direction); + NodeQuery q = Queries.createRelatedNodesQuery(node, cloud.getNodeManager("news"), "posrel", "destination"); + StepField pos = q.createStepField(q.getSteps().get(1), "pos"); + Constraint c = q.createConstraint(pos, new Integer(1)); + System.out.println("Query " + q.toSql()); + } + + @Test public void nodeComparationsAndSorting() { assumeNotNull(remoteCloud); @@ -289,7 +306,7 @@ NodeList relatedNodes = Queries.getRelatedNodes(node, cloud.getNodeManager("news"), "posrel", "destination", "pos", "DOWN"); - // implemetnation based on NodeQuery + // implementation based on NodeQuery NodeQuery q = Queries.createRelatedNodesQuery(node, cloud.getNodeManager("news"), "posrel", "destination"); Queries.addSortOrders(q, "posrel.pos,number", "DOWN"); List<Node> relatedNodes2 = Queries.getRelatedNodesInTransaction(node, q); // outside a transaction it works too @@ -347,4 +364,53 @@ } + + @Test + public void getRelationNodes() { + assumeNotNull(remoteCloud); + Cloud cloud = remoteCloud; + Node node = cloud.getNode("default.mags"); + // implementation based on NodeQuery + NodeQuery q = Queries.createRelationNodesQuery(node, cloud.getNodeManager("news"), "posrel", "destination"); + Queries.addSortOrders(q, "pos,number", "DOWN"); + + // must basic implementation used by e.g. mm:relatednodes + NodeList relatedNodes = q.getNodeManager().getList(q); + + + List<Node> relatedNodes2 = Queries.getRelatedNodesInTransaction(node, q); // outside a transaction it works too + + System.out.println(toString(relatedNodes, null) + " =? " + toString(relatedNodes2, null)); + assertListEqual(relatedNodes, null, relatedNodes2, (String) null); + + int sizeBefore = relatedNodes2.size(); + + // Now for the really insteresting stuff. + { + // Adding a node + + Transaction t = cloud.getTransaction("relationnodes1"); + Node magNode = t.getNode("default.mags"); + Node newNode = t.getNodeManager("news").createNode(); + newNode.setStringValue("title", "Test node of " + QueriesTest.class.getName()); + + Node newRelation = Queries.addToResult(q, newNode).get(0); + + // + List<Node> relatedNodesInTransaction = Queries.getRelatedNodesInTransaction(magNode, q); + + assertEquals(sizeBefore + 1, relatedNodesInTransaction.size()); + + assertTrue(relatedNodesInTransaction.contains(newRelation)); // It should be the relation + assertFalse(relatedNodesInTransaction.contains(newNode)); // Not the related node + + + // order of posrel was DOWN, so this newNode should even be the first one in this list: + + assertEquals(newRelation, relatedNodesInTransaction.get(0)); + t.cancel(); + } + + + } } _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs