You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by en...@apache.org on 2023/03/01 18:23:00 UTC

[sling-org-apache-sling-testing-jcr-mock] branch master updated: SLING-11789 MockNode#orderBefore incorrectly removes nodes

This is an automated email from the ASF dual-hosted git repository.

enorman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-jcr-mock.git


The following commit(s) were added to refs/heads/master by this push:
     new 30071fd  SLING-11789 MockNode#orderBefore incorrectly removes nodes
     new 4506578  Merge pull request #12 from enapps-enorman/issue/SLING-11789
30071fd is described below

commit 30071fdc3b4841c69584b8f3c5beb3e5ca507747
Author: Eric Norman <en...@apache.org>
AuthorDate: Sat Feb 25 15:45:20 2023 -0800

    SLING-11789 MockNode#orderBefore incorrectly removes nodes
---
 .../apache/sling/testing/mock/jcr/MockSession.java |  4 +++-
 .../sling/testing/mock/jcr/MockNodeTest.java       | 27 ++++++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
index 0fc994c..4953e7f 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
@@ -226,9 +226,11 @@ class MockSession implements Session {
         }
 
         // Find all items matching the source
+        final String sourcePath = source.getPath();
+        final String sourcePathPrefix = String.format("%s/", sourcePath);
         List<ItemData> itemsToMove = new LinkedList<>();
         for (String key : new ArrayList<>(items.keySet())) {
-            if (key.startsWith(source.getPath())) {
+            if (key.equals(sourcePath) || key.startsWith(sourcePathPrefix)) {
                 itemsToMove.add(items.remove(key));
             }
         }
diff --git a/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java b/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
index 1d8020a..cd17364 100644
--- a/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
@@ -226,6 +226,33 @@ public class MockNodeTest {
                 getNodeNames(foo.getNodes()));
     }
 
+    /**
+     * SLING-11789 Verify that orderBefore works when the names of the child nodes
+     * have a common prefix.
+     */
+    @Test
+    public void testOrderBeforeWithCommonPrefix() throws RepositoryException {
+        Node foo = this.session.getRootNode().addNode("foo");
+        this.session.save();
+        foo.addNode("child100");
+        foo.addNode("child10");
+        foo.addNode("child1");
+        session.save();
+        assertArrayEquals("Expected nodes order mismatch",
+                new String[] {"child100", "child10", "child1"},
+                getNodeNames(foo.getNodes()));
+        foo.orderBefore("child10", "child100");
+        session.save();
+        assertArrayEquals("Expected nodes order mismatch",
+                new String[] {"child10", "child100", "child1"},
+                getNodeNames(foo.getNodes()));
+        foo.orderBefore("child10", null);
+        session.save();
+        assertArrayEquals("Expected nodes order mismatch",
+                new String[] {"child100", "child1", "child10"},
+                getNodeNames(foo.getNodes()));
+    }
+
     @Test
     public void testNodeDefinition() throws RepositoryException {
         Node node1 = this.session.getRootNode().getNode("node1");