This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.testing.sling-mock-1.6.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit b24a116b3382692b57b999bc07d6b177a45ff57f Author: Stefan Seifert <[email protected]> AuthorDate: Mon Sep 28 20:37:21 2015 +0000 SLING-5067 rewrite unit tests to use new "uniqueRoot" feature git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1705765 13f79535-47bb-0310-9956-ffa450edef68 --- .../testing/mock/sling/context/UniqueRoot.java | 4 +- .../resource/AbstractJcrResourceResolverTest.java | 46 +++++------- .../AbstractSlingCrudResourceResolverTest.java | 81 ++++++++-------------- 3 files changed, 50 insertions(+), 81 deletions(-) diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java b/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java index 20f836b..471c657 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java @@ -33,8 +33,8 @@ import com.google.common.collect.ImmutableMap; /** * Manages unique root paths in JCR repository. - * This is important for resource resolver types like JCR_JACKRABBIT and JCR_OAK - * where the repository is not cleand for each test run. This class provides + * This is important for resource resolver types like JCR_JACKRABBIT + * where the repository is not cleaned for each test run. This class provides * unique root paths for each run, and cleans them up when done. */ public class UniqueRoot { diff --git a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java index 8012308..2726da9 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java @@ -18,6 +18,7 @@ */ package org.apache.sling.testing.mock.sling.resource; +import static org.apache.sling.jcr.resource.JcrResourceConstants.NT_SLING_ORDERED_FOLDER; import static org.apache.sling.jcr.resource.JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; @@ -41,13 +42,13 @@ import org.apache.commons.lang3.time.DateUtils; import org.apache.jackrabbit.JcrConstants; import org.apache.sling.api.resource.PersistenceException; import org.apache.sling.api.resource.Resource; -import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceUtil; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.testing.mock.sling.MockSling; import org.apache.sling.testing.mock.sling.ResourceResolverType; +import org.apache.sling.testing.mock.sling.junit.SlingContext; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import com.google.common.collect.ImmutableList; @@ -59,6 +60,9 @@ import com.google.common.collect.ImmutableMap; */ public abstract class AbstractJcrResourceResolverTest { + @Rule + public SlingContext context = new SlingContext(getResourceResolverType()); + private static final String STRING_VALUE = "value1"; private static final String[] STRING_ARRAY_VALUE = new String[] { "value1", "value2" }; private static final int INTEGER_VALUE = 25; @@ -68,21 +72,14 @@ public abstract class AbstractJcrResourceResolverTest { private static final Calendar CALENDAR_VALUE = Calendar.getInstance(); private static final byte[] BINARY_VALUE = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; - private ResourceResolver resourceResolver; private Session session; protected Node testRoot; - private static volatile long rootNodeCounter; protected abstract ResourceResolverType getResourceResolverType(); - protected ResourceResolver newResourceResolver() { - return MockSling.newResourceResolver(getResourceResolverType()); - } - @Before public final void setUp() throws RepositoryException { - resourceResolver = newResourceResolver(); - session = resourceResolver.adaptTo(Session.class); + session = context.resourceResolver().adaptTo(Session.class); // prepare some test data using JCR API Node rootNode = getTestRootNode(); @@ -106,28 +103,21 @@ public abstract class AbstractJcrResourceResolverTest { @After public final void tearDown() { testRoot = null; - resourceResolver.close(); } /** * Return a test root node, created on demand, with a unique path */ private Node getTestRootNode() throws RepositoryException { - if (testRoot == null) { - final Node root = session.getRootNode(); - if (getResourceResolverType() == ResourceResolverType.JCR_JACKRABBIT) { - final Node classRoot = root.addNode(getClass().getSimpleName()); - testRoot = classRoot.addNode(System.currentTimeMillis() + "_" + (rootNodeCounter++)); - } else { - testRoot = root.addNode("test", JcrConstants.NT_UNSTRUCTURED); - } + if (this.testRoot == null) { + this.testRoot = context.resourceResolver().getResource(context.uniqueRoot().content()).adaptTo(Node.class); } return testRoot; } @Test public void testGetResourcesAndValues() throws IOException, RepositoryException { - Resource resource1 = resourceResolver.getResource(getTestRootNode().getPath() + "/node1"); + Resource resource1 = context.resourceResolver().getResource(getTestRootNode().getPath() + "/node1"); assertNotNull(resource1); assertEquals("node1", resource1.getName()); @@ -160,9 +150,9 @@ public abstract class AbstractJcrResourceResolverTest { @Test public void testCreateNodeWithPrimaryType() throws RepositoryException, PersistenceException { - Resource parent = resourceResolver.getResource(getTestRootNode().getPath()); + Resource parent = context.resourceResolver().getResource(getTestRootNode().getPath()); - Resource child = resourceResolver.create(parent, "nodeTypeResource", ImmutableMap.<String, Object> builder() + Resource child = context.resourceResolver().create(parent, "nodeTypeResource", ImmutableMap.<String, Object> builder() .put(SLING_RESOURCE_TYPE_PROPERTY, JcrConstants.NT_UNSTRUCTURED).build()); assertNotNull(child); assertEquals(JcrConstants.NT_UNSTRUCTURED, child.getResourceType()); @@ -171,12 +161,12 @@ public abstract class AbstractJcrResourceResolverTest { @Test public void testCreateNodeWithResourceType() throws RepositoryException, PersistenceException { - Resource parent = resourceResolver.getResource(getTestRootNode().getPath()); + Resource parent = context.resourceResolver().getResource(getTestRootNode().getPath()); - Resource child = ResourceUtil.getOrCreateResource(resourceResolver, parent.getPath() + "/intermediate/child", + Resource child = ResourceUtil.getOrCreateResource(context.resourceResolver(), parent.getPath() + "/intermediate/child", "sling/resource/type", JcrConstants.NT_UNSTRUCTURED, true); assertNotNull(child); - assertEquals(JcrConstants.NT_UNSTRUCTURED, parent.getResourceType()); + assertEquals(NT_SLING_ORDERED_FOLDER, parent.getResourceType()); assertEquals("sling/resource/type", child.getResourceType()); } @@ -188,11 +178,11 @@ public abstract class AbstractJcrResourceResolverTest { return; } - Resource testRootResource = resourceResolver.getResource(getTestRootNode().getPath()); - resourceResolver.delete(testRootResource); + Resource testRootResource = context.resourceResolver().getResource(getTestRootNode().getPath()); + context.resourceResolver().delete(testRootResource); assertTrue(session.hasPendingChanges()); - resourceResolver.commit(); + context.resourceResolver().commit(); assertFalse(session.hasPendingChanges()); } diff --git a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java index 9880ef5..e9f4dbd 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java @@ -38,14 +38,13 @@ import org.apache.commons.lang3.StringUtils; import org.apache.jackrabbit.JcrConstants; import org.apache.sling.api.resource.PersistenceException; import org.apache.sling.api.resource.Resource; -import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceUtil; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.testing.mock.sling.MockSling; import org.apache.sling.testing.mock.sling.ResourceResolverType; import org.apache.sling.testing.mock.sling.builder.ContentBuilder; -import org.junit.After; +import org.apache.sling.testing.mock.sling.junit.SlingContext; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import com.google.common.collect.ImmutableList; @@ -57,6 +56,9 @@ import com.google.common.collect.Lists; * used to create the test data. */ public abstract class AbstractSlingCrudResourceResolverTest { + + @Rule + public SlingContext context = new SlingContext(getResourceResolverType()); private static final String STRING_VALUE = "value1"; private static final String[] STRING_ARRAY_VALUE = new String[] { "value1", "value2" }; @@ -67,19 +69,11 @@ public abstract class AbstractSlingCrudResourceResolverTest { private static final Calendar CALENDAR_VALUE = Calendar.getInstance(); private static final byte[] BINARY_VALUE = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; - protected ResourceResolver resourceResolver; protected Resource testRoot; - private static volatile long rootNodeCounter; - protected abstract ResourceResolverType getResourceResolverType(); - protected ResourceResolver newResourceResolver() { - return MockSling.newResourceResolver(getResourceResolverType()); - } - @Before public final void setUp() throws IOException { - this.resourceResolver = newResourceResolver(); // prepare some test data using Sling CRUD API Resource rootNode = getTestRootResource(); @@ -94,20 +88,14 @@ public abstract class AbstractSlingCrudResourceResolverTest { props.put("dateProp", DATE_VALUE); props.put("calendarProp", CALENDAR_VALUE); props.put("binaryProp", new ByteArrayInputStream(BINARY_VALUE)); - Resource node1 = this.resourceResolver.create(rootNode, "node1", props); + Resource node1 = context.resourceResolver().create(rootNode, "node1", props); - resourceResolver.create(node1, "node11", ImmutableMap.<String, Object>builder() + context.resourceResolver().create(node1, "node11", ImmutableMap.<String, Object>builder() .put("stringProp11", STRING_VALUE) .build()); - this.resourceResolver.create(node1, "node12", ValueMap.EMPTY); + context.resourceResolver().create(node1, "node12", ValueMap.EMPTY); - this.resourceResolver.commit(); - } - - @After - public final void tearDown() { - this.testRoot = null; - this.resourceResolver.close(); + context.resourceResolver().commit(); } /** @@ -116,23 +104,14 @@ public abstract class AbstractSlingCrudResourceResolverTest { */ protected Resource getTestRootResource() throws PersistenceException { if (this.testRoot == null) { - Map<String, Object> props = new HashMap<String, Object>(); - props.put(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_UNSTRUCTURED); - final Resource root = this.resourceResolver.getResource("/"); - if (getResourceResolverType() == ResourceResolverType.JCR_MOCK - || getResourceResolverType() == ResourceResolverType.RESOURCERESOLVER_MOCK) { - this.testRoot = this.resourceResolver.create(root, "test", props); - } else { - this.testRoot = this.resourceResolver.create(root, getClass().getSimpleName() + "_" - + System.currentTimeMillis() + "_" + (rootNodeCounter++), props); - } + this.testRoot = context.resourceResolver().getResource(context.uniqueRoot().content()); } return this.testRoot; } @Test public void testSimpleProperties() throws IOException { - Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1"); + Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1"); assertNotNull(resource1); assertEquals("node1", resource1.getName()); @@ -146,7 +125,7 @@ public abstract class AbstractSlingCrudResourceResolverTest { @Test public void testSimpleProperties_DeepPathAccess() throws IOException { - Resource resource1 = resourceResolver.getResource(testRoot.getPath()); + Resource resource1 = context.resourceResolver().getResource(testRoot.getPath()); assertNotNull(resource1); assertEquals(testRoot.getName(), resource1.getName()); @@ -161,7 +140,7 @@ public abstract class AbstractSlingCrudResourceResolverTest { @Test public void testDateProperty() throws IOException { - Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1"); + Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1"); ValueMap props = ResourceUtil.getValueMap(resource1); // TODO: enable this test when JCR resource implementation supports // writing Date objects (SLING-3846) @@ -174,7 +153,7 @@ public abstract class AbstractSlingCrudResourceResolverTest { @Test public void testDatePropertyToCalendar() throws IOException { - Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1"); + Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1"); ValueMap props = ResourceUtil.getValueMap(resource1); // TODO: enable this test when JCR resource implementation supports // writing Date objects (SLING-3846) @@ -189,14 +168,14 @@ public abstract class AbstractSlingCrudResourceResolverTest { @Test public void testCalendarProperty() throws IOException { - Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1"); + Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1"); ValueMap props = ResourceUtil.getValueMap(resource1); assertEquals(CALENDAR_VALUE.getTime(), props.get("calendarProp", Calendar.class).getTime()); } @Test public void testCalendarPropertyToDate() throws IOException { - Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1"); + Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1"); ValueMap props = ResourceUtil.getValueMap(resource1); Date dateValue = props.get("calendarProp", Date.class); assertNotNull(dateValue); @@ -205,7 +184,7 @@ public abstract class AbstractSlingCrudResourceResolverTest { @Test public void testListChildren() throws IOException { - Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1"); + Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1"); List<Resource> children = ImmutableList.copyOf(resource1.listChildren()); assertEquals(2, children.size()); @@ -215,15 +194,15 @@ public abstract class AbstractSlingCrudResourceResolverTest { @Test public void testListChildren_RootNode() throws IOException { - Resource resource1 = resourceResolver.getResource("/"); + Resource resource1 = context.resourceResolver().getResource("/"); List<Resource> children = Lists.newArrayList(resource1.listChildren()); assertFalse(children.isEmpty()); - assertTrue(containsResource(children, getTestRootResource())); + assertTrue(containsResource(children, getTestRootResource().getParent())); children = Lists.newArrayList(resource1.getChildren()); assertFalse(children.isEmpty()); - assertTrue(containsResource(children, getTestRootResource())); + assertTrue(containsResource(children, getTestRootResource().getParent())); } private boolean containsResource(List<Resource> children, Resource resource) { @@ -237,7 +216,7 @@ public abstract class AbstractSlingCrudResourceResolverTest { @Test public void testBinaryData() throws IOException { - Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1"); + Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1"); Resource binaryPropResource = resource1.getChild("binaryProp"); InputStream is = binaryPropResource.adaptTo(InputStream.class); @@ -255,29 +234,29 @@ public abstract class AbstractSlingCrudResourceResolverTest { @Test public void testPrimaryTypeResourceType() throws PersistenceException { - Resource resource = this.resourceResolver.getResource(getTestRootResource().getPath()); + Resource resource = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1"); assertEquals(JcrConstants.NT_UNSTRUCTURED, resource.getResourceType()); } @Test public void testGetRootResourceByNullPath() { - Resource rootResource = this.resourceResolver.resolve((String)null); + Resource rootResource = context.resourceResolver().resolve((String)null); assertNotNull(rootResource); assertEquals("/", rootResource.getPath()); } @Test public void testSearchPath() { - ContentBuilder builder = new ContentBuilder(this.resourceResolver); + ContentBuilder builder = new ContentBuilder(context.resourceResolver()); builder.resource("/libs/any/path"); - Resource resource = this.resourceResolver.getResource("any/path"); + Resource resource = context.resourceResolver().getResource("any/path"); assertNotNull(resource); assertEquals("/libs/any/path", resource.getPath()); builder.resource("/apps/any/path"); - resource = this.resourceResolver.getResource("any/path"); + resource = context.resourceResolver().getResource("any/path"); assertNotNull(resource); assertEquals("/apps/any/path", resource.getPath()); } @@ -290,11 +269,11 @@ public abstract class AbstractSlingCrudResourceResolverTest { return; } - resourceResolver.delete(getTestRootResource()); - assertTrue(resourceResolver.hasChanges()); + context.resourceResolver().delete(getTestRootResource()); + assertTrue(context.resourceResolver().hasChanges()); - resourceResolver.commit(); - assertFalse(resourceResolver.hasChanges()); + context.resourceResolver().commit(); + assertFalse(context.resourceResolver().hasChanges()); } } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
