Package org.apache.sling.resource.collection.impl

Source Code of org.apache.sling.resource.collection.impl.ResourceCollectionImplTest

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.sling.resource.collection.impl;

import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import junit.framework.Assert;

import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.jcr.resource.JcrResourceConstants;
import org.apache.sling.resource.collection.ResourceCollection;
import org.apache.sling.resource.collection.ResourceCollectionManager;
import org.apache.sling.testing.resourceresolver.MockResourceResolverFactory;
import org.junit.Before;
import org.junit.Test;

public class ResourceCollectionImplTest {
  private ResourceResolver resResolver;
    private ResourceCollectionManager rcm;

  @Before
  public void setUp() throws Exception {
    resResolver = new MockResourceResolverFactory().getAdministrativeResourceResolver(null);
    rcm = new ResourceCollectionManagerImpl();
  }

  @Test
  public void testAddResource() throws Exception {

        final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "test1");
        final Resource res1 = resResolver.create(resResolver.getResource("/"), "res1",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(res1);
        final Resource resource = resResolver.create(resResolver.getResource("/"), "res2",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(resource);

        Assert.assertEquals(true, collection.contains(resource));
        Assert.assertEquals(true, collection.contains(resource));
        Assert.assertNotNull(resResolver.getResource("/test1"));
        Assert.assertEquals(ResourceCollection.RESOURCE_TYPE, resResolver.getResource("/test1").getResourceType());
  }

  @Test
  public void testCreateCollection() throws Exception {
        final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "test1");
        final Resource res1 = resResolver.create(resResolver.getResource("/"), "res1",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(res1, null);
        final Resource resource = resResolver.create(resResolver.getResource("/"), "res2",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(resource, null);

        Assert.assertEquals(true, collection.contains(resource));
        Assert.assertNotNull(resResolver.getResource("/test1"));
        Assert.assertEquals(ResourceCollection.RESOURCE_TYPE, resResolver.getResource("/test1").getResourceType());
  }

  @Test
  public void testCheckPath() throws Exception {
    final Resource rootResource = resResolver.create(resResolver.getResource("/"), "root",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));

        final ResourceCollection collection = rcm.createCollection(rootResource, "test1");


        Assert.assertEquals(rootResource.getPath() + "/" + "test1", collection.getPath());
   }

  @Test
  public void testGetCollection() throws Exception {
        ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "test1");
        final Resource res1 = resResolver.create(resResolver.getResource("/"), "res1",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(res1, null);
        final Resource resource = resResolver.create(resResolver.getResource("/"), "res2",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(resource, null);

        collection = rcm.getCollection(resResolver.getResource(collection.getPath()));

        Assert.assertEquals(true, collection.contains(resource));
        Assert.assertNotNull(resResolver.getResource("/test1"));
        Assert.assertEquals(ResourceCollection.RESOURCE_TYPE, resResolver.getResource("/test1").getResourceType());
  }

  @Test
  public void testListCollection() throws Exception {
        final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "collection1");
        final Resource res1 = resResolver.create(resResolver.getResource("/"), "res1",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(res1, null);
        final Resource resource = resResolver.create(resResolver.getResource("/"), "res2",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));

        collection.add(resource, null);
        Assert.assertEquals(true, collection.contains(resource));

        final Iterator<Resource> resources = collection.getResources();
        int numOfRes = 0;
        while (resources.hasNext()) {
          resources.next();
          numOfRes ++;
        }

        Assert.assertEquals(2, numOfRes);
  }

  @Test
  public void testCreateCollectionWithProperties() throws Exception {
    final Map<String, Object> props = new HashMap<String, Object>();
    props.put(JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY, "some/type");
    props.put("creator", "slingdev");

        final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "collection3", props);
        final Resource resource = resResolver.create(resResolver.getResource("/"), "res1",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(resource, null);

        final Resource collectionRes = resResolver.getResource("/collection3");
        Assert.assertNotNull(collectionRes);

        Assert.assertEquals(true, collection.contains(resource));
        Assert.assertEquals(ResourceCollection.RESOURCE_TYPE, collectionRes.getResourceSuperType());

        ValueMap vm = collectionRes.adaptTo(ValueMap.class);

        Assert.assertEquals("slingdev", vm.get("creator", ""));
  }

  @Test
  public void testAddResourceWithProperties() throws Exception {
    final Map<String, Object> props = new HashMap<String, Object>();
    props.put("creator", "slingdev");

        final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "collection3");

        final Resource resource = resResolver.create(resResolver.getResource("/"), "res1",
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(resource, props);

        final Resource collectionRes = resResolver.getResource("/collection3");
        Assert.assertNotNull(collectionRes);

        Assert.assertEquals(true, collection.contains(resource));

        ValueMap vm = collection.getProperties(resource);

        if (vm != null) {
          Assert.assertEquals("slingdev", vm.get("creator", ""));
        } else {
          Assert.fail("no resource entry in collection");
        }
  }

  @Test
  public void testOrdering() throws Exception {
        final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "test1");
        String[] resPaths = {"/res1", "/res2"};
        final Resource resource = resResolver.create(resResolver.getResource("/"), resPaths[0].substring(1),
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));

        collection.add(resource, null);
        final Resource resource2 = resResolver.create(resResolver.getResource("/"), resPaths[1].substring(1),
                Collections.singletonMap(ResourceResolver.PROPERTY_RESOURCE_TYPE, (Object)"type"));
        collection.add(resource2, null);

        Assert.assertEquals(true, collection.contains(resource2));
        Assert.assertNotNull(resResolver.getResource("/test1"));
        Assert.assertEquals(ResourceCollection.RESOURCE_TYPE, resResolver.getResource("/test1").getResourceType());

        Iterator<Resource> resources = collection.getResources();

        int numOfRes = 0;
        while (resources.hasNext()) {
          Resource entry = resources.next();
          Assert.assertEquals(resPaths[numOfRes], entry.getPath());
          numOfRes ++;
        }

        try {
          collection.orderBefore(resource, resource);
          Assert.fail("should have thrown IllegalArgument");
        } catch (IllegalArgumentException e) {

        }

        //change the order
        collection.orderBefore(resource2, resource);

        resources = collection.getResources();

        numOfRes = 2;
        while (resources.hasNext()) {
          numOfRes --;
          Resource entry = resources.next();
          Assert.assertEquals(resPaths[numOfRes], entry.getPath());
        }

        Assert.assertEquals(0, numOfRes);
  }
}
TOP

Related Classes of org.apache.sling.resource.collection.impl.ResourceCollectionImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.