Package org.eclipse.orion.server.tests.resources

Source Code of org.eclipse.orion.server.tests.resources.ResourceShapeTest

/*******************************************************************************
* Copyright (c) 2012, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.orion.server.tests.resources;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import org.eclipse.orion.server.core.resources.Property;
import org.eclipse.orion.server.core.resources.ResourceShape;
import org.eclipse.orion.server.core.resources.ResourceShapeFactory;
import org.junit.Test;

/**
* Tests for {@link ResourceShape}.
*/
public class ResourceShapeTest {
  @Test
  public void testDefaultResourceShape() throws Exception {
    // when
    ResourceShape resourceShape = ResourceShapeFactory.createResourceShape(TestResource.class, null);

    // then
    Property[] properties = resourceShape.getProperties();
    assertAllPropertiesExists(properties);
  }

  private void assertAllPropertiesExists(Property[] properties) {
    assertEquals(5, properties.length);
    assertHasProperty(properties, TestResource.STRING_PROPERTY);
    assertHasProperty(properties, TestResource.INT_PROPERTY);
    assertHasProperty(properties, TestResource.BOOLEAN_PROPERTY);
    assertHasProperty(properties, TestResource.LOCATION_PROPERTY);
    assertHasProperty(properties, TestResource.RESOURCE_PROPERTY);
  }

  /**
   * Asserts that a property array contains a property with name matching the given property.
   */
  private void assertHasProperty(Property[] properties, Property toContain) {
    for (Property testProp : properties) {
      if (toContain.getName().equals(testProp.getName()))
        return;
    }
    fail("Missing expected property: " + toContain.getName());
  }

  @Test(expected = IllegalArgumentException.class)
  public void testInvalidRepositoryShapeType() throws Exception {
    // when
    ResourceShapeFactory.createResourceShape(TestResource.class, "invalid");
  }

  @Test
  public void testDefaultResourceShapeForNestedResource() throws Exception {
    // given
    ResourceShape resourceShape = ResourceShapeFactory.createResourceShape(TestResource.class, null);
    Property[] properties = resourceShape.getProperties();
    Property resourceProperty = getPropertyWithName(properties, TestResource.RESOURCE_PROPERTY_NAME);

    // when
    ResourceShape nestedResourceShape = resourceProperty.getResourceShape();

    // then
    Property[] nestedProperties = nestedResourceShape.getProperties();
    assertEquals(1, nestedProperties.length);
    assertHasProperty(nestedProperties, TestResource.LOCATION_PROPERTY);
  }

  private Property getPropertyWithName(Property[] properties, String name) {
    for (Property property : properties) {
      if (property.getName().equals(name))
        return property;
    }
    throw new IllegalArgumentException(name + " not found");
  }
}
TOP

Related Classes of org.eclipse.orion.server.tests.resources.ResourceShapeTest

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.