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");