SLING-8325 sling-mock: Overlay ContentBuilder.resource methods with variants to create child resources
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/builder/ContentBuilder.java b/core/src/main/java/org/apache/sling/testing/mock/sling/builder/ContentBuilder.java
index 7f8e985..7502513 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/builder/ContentBuilder.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/builder/ContentBuilder.java
@@ -92,6 +92,39 @@
}
/**
+ * Create child resource below the given parent resource.
+ * @param resource Parent resource
+ * @param name Child resource name
+ * @return Resource object
+ */
+ public final @NotNull Resource resource(@NotNull Resource resource, @NotNull String name) {
+ return resource(resource, name, ValueMap.EMPTY);
+ }
+
+ /**
+ * Create child resource below the given parent resource.
+ * @param resource Parent resource
+ * @param name Child resource name
+ * @param properties Properties for resource.
+ * @return Resource object
+ */
+ public final @NotNull Resource resource(@NotNull Resource resource, @NotNull String name, @NotNull Map<String, Object> properties) {
+ String path = resource.getPath() + "/" + StringUtils.stripStart(name, "/");
+ return resource(path, properties);
+ }
+
+ /**
+ * Create child resource below the given parent resource.
+ * @param resource Parent resource
+ * @param name Child resource name
+ * @param properties Properties for resource.
+ * @return Resource object
+ */
+ public final @NotNull Resource resource(@NotNull Resource resource, @NotNull String name, @NotNull Object @NotNull ... properties) {
+ return resource(resource, name, MapUtil.toMap(properties));
+ }
+
+ /**
* Ensure that a resource exists at the given path. If not, it is created
* using <code>nt:unstructured</code> node type.
* @param path Resource path
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/builder/package-info.java b/core/src/main/java/org/apache/sling/testing/mock/sling/builder/package-info.java
index ed6acd2..efa0a0d 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/builder/package-info.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/builder/package-info.java
@@ -19,5 +19,5 @@
/**
* Content builder for creating test content.
*/
-@org.osgi.annotation.versioning.Version("1.1.1")
+@org.osgi.annotation.versioning.Version("1.2")
package org.apache.sling.testing.mock.sling.builder;
diff --git a/core/src/test/java/org/apache/sling/testing/mock/sling/builder/ContentBuilderTest.java b/core/src/test/java/org/apache/sling/testing/mock/sling/builder/ContentBuilderTest.java
index 7e8ecb5..d92d374 100644
--- a/core/src/test/java/org/apache/sling/testing/mock/sling/builder/ContentBuilderTest.java
+++ b/core/src/test/java/org/apache/sling/testing/mock/sling/builder/ContentBuilderTest.java
@@ -70,4 +70,21 @@
assertEquals("value1", props.get("stringProp", String.class));
}
+ @Test
+ public void testChildResource() {
+ Resource resource = context.create().resource("/content/test1/resource1");
+
+ Resource child1 = context.create().resource(resource, "child1");
+ assertNotNull(child1);
+ assertEquals("child1", child1.getName());
+ assertTrue(ResourceUtil.getValueMap(child1).isEmpty());
+
+ Resource child2 = context.create().resource(resource, "/child2",
+ "prop1", "value1");
+ assertNotNull(child2);
+ assertEquals("child2", child2.getName());
+ ValueMap props = ResourceUtil.getValueMap(child2);
+ assertEquals("value1", props.get("prop1", String.class));
+ }
+
}