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

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

/*******************************************************************************
* Copyright (c) 2012 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.assertNull;

import java.net.URI;

import org.eclipse.orion.server.core.resources.JSONSerializer;
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.eclipse.orion.server.core.resources.Serializer;
import org.json.JSONObject;
import org.junit.Test;

/**
* Tests for {@link JSONSerializer}.
*/
public class JSONSerializerTest {
  @Test
  public void testSerializeAllProperties() throws Exception {
    // given
    TestResource testResource = new TestResource();
    Serializer<JSONObject> jsonSerializer = new JSONSerializer();
    ResourceShape resourceShape = new ResourceShape();
    resourceShape.setProperties(TestResource.ALL_PROPERTIES);

    // when
    JSONObject jsonObject = jsonSerializer.serialize(testResource, resourceShape);
    String jsonString = jsonObject.toString();
    jsonObject = new JSONObject(jsonString);

    // then
    assertEquals(testResource.getName(), jsonObject.getString(TestResource.STRING_PROPERTY_NAME));
    assertEquals(testResource.getID(), jsonObject.getInt(TestResource.INT_PROPERTY_NAME));
    assertEquals(testResource.isParent(), jsonObject.getBoolean(TestResource.BOOLEAN_PROPERTY_NAME));
    assertEquals(testResource.getLocationProperty().toString(), jsonObject.getString(TestResource.LOCATION_PROPERTY_NAME));
    JSONObject childJson = jsonObject.getJSONObject(TestResource.RESOURCE_PROPERTY_NAME);
    assertEquals(testResource.getChild().getLocationProperty(), URI.create(childJson.getString(TestResource.LOCATION_PROPERTY_NAME)));
    // TODO: org.eclipse.orion.internal.server.servlets.ProtocolConstants.KEY_TYPE
    assertEquals(TestResource.TEST_TYPE, jsonObject.getString("Type"));
  }

  @Test
  public void testSerializeSingleProperty() throws Exception {
    // given
    TestResource testResource = new TestResource();
    Serializer<JSONObject> jsonSerializer = new JSONSerializer();
    ResourceShape resourceShape = new ResourceShape();
    resourceShape.addProperty(TestResource.STRING_PROPERTY);

    // when
    JSONObject jsonObject = jsonSerializer.serialize(testResource, resourceShape);
    String jsonString = jsonObject.toString();
    jsonObject = new JSONObject(jsonString);

    // then
    assertEquals(testResource.getName(), jsonObject.getString(TestResource.STRING_PROPERTY_NAME));
    assertNull(jsonObject.optString(TestResource.INT_PROPERTY_NAME, null));
    // TODO: org.eclipse.orion.internal.server.servlets.ProtocolConstants.KEY_TYPE
    assertEquals(TestResource.TEST_TYPE, jsonObject.getString("Type"));
  }

  @Test(expected = IllegalArgumentException.class)
  public void testSerializeInvalidProperty() throws Exception {
    // given
    TestResource testResource = new TestResource();
    Serializer<JSONObject> jsonSerializer = new JSONSerializer();
    ResourceShape resourceShape = new ResourceShape();
    resourceShape.addProperty(new Property("invalid"));

    // when
    jsonSerializer.serialize(testResource, resourceShape);
  }

  @Test
  public void testSerializeExtendedTestResource() throws Exception {
    // given
    ExtendedTestResource testResource = new ExtendedTestResource();
    Serializer<JSONObject> jsonSerializer = new JSONSerializer();
    ResourceShape resourceShape = ResourceShapeFactory.createResourceShape(ExtendedTestResource.class, null);

    // when
    JSONObject jsonObject = jsonSerializer.serialize(testResource, resourceShape);
    String jsonString = jsonObject.toString();
    jsonObject = new JSONObject(jsonString);

    // then
    assertEquals(testResource.getName(), jsonObject.getString(TestResource.STRING_PROPERTY_NAME));
    assertEquals(testResource.getID(), jsonObject.getInt(TestResource.INT_PROPERTY_NAME));
    assertEquals(testResource.isParent(), jsonObject.getBoolean(TestResource.BOOLEAN_PROPERTY_NAME));
    assertEquals(testResource.getLocationProperty().toString(), jsonObject.getString(TestResource.LOCATION_PROPERTY_NAME));
    JSONObject childJson = jsonObject.getJSONObject(TestResource.RESOURCE_PROPERTY_NAME);
    assertEquals(testResource.getChild().getLocationProperty(), URI.create(childJson.getString(TestResource.LOCATION_PROPERTY_NAME)));
    assertEquals(testResource.getTime(), jsonObject.getLong(ExtendedTestResource.LONG_PROPERTY_NAME));
    // TODO: org.eclipse.orion.internal.server.servlets.ProtocolConstants.KEY_TYPE
    assertEquals(ExtendedTestResource.EXTENDED_TEST_TYPE, jsonObject.getString("Type"));
  }
}
TOP

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

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.