/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG 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:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.core.rest.resources;
import static org.eclipse.skalli.core.rest.resources.ConverterTestUtils.newMinimalProject;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.skalli.core.rest.JSONRestWriter;
import org.eclipse.skalli.core.rest.XMLRestWriter;
import org.eclipse.skalli.model.Project;
import org.eclipse.skalli.services.rest.RestWriter;
import org.eclipse.skalli.testutil.RestWriterTestBase;
import org.eclipse.skalli.testutil.TestUUIDs;
import org.junit.Test;
@SuppressWarnings("nls")
public class SubprojectsConverterTest extends RestWriterTestBase {
private static final String NAMESPACE_ATTRIBUTES = MessageFormat.format(ATTRIBUTES_PATTERN,
SubprojectsConverter.NAMESPACE, "subprojects", SubprojectsConverter.API_VERSION);
private static final String COMMON_PART_XML = MessageFormat.format(
"<subprojects {0}>"
+ "<link rel=\"self\" href=\"http://example.org/api/projects/{1}/subprojects\"/>"
+ "<link rel=\"project\" href=\"http://example.org/api/projects/{1}\"/>",
NAMESPACE_ATTRIBUTES, TestUUIDs.TEST_UUIDS[0]);
private static final String COMMON_PART_JSON = MessageFormat.format(
"'{'"
+ "\"namespace\":\"{0}\","
+ "\"apiVersion\":\"{1}\",\"links\":"
+ "['{'\"rel\":\"self\",\"href\":\"http://example.org/api/projects/{2}/subprojects\"},"
+ "'{'\"rel\":\"project\",\"href\":\"http://example.org/api/projects/{2}\"}]",
SubprojectsConverter.NAMESPACE, SubprojectsConverter.API_VERSION, TestUUIDs.TEST_UUIDS[0]);
@Test
public void testMarshalEmptySubprojectsXML() throws Exception {
Subprojects subprojects = new Subprojects(TestUUIDs.TEST_UUIDS[0], Collections.<Project>emptyList());
XMLRestWriter restWriter = new XMLRestWriter(writer, "http://example.org");
marshalSubprojects(subprojects, restWriter);
assertEqualsXML(COMMON_PART_XML + "</subprojects>");
}
@Test
public void testMarshalEmptySubprojectsJSON() throws Exception {
Subprojects subprojects = new Subprojects(TestUUIDs.TEST_UUIDS[0], Collections.<Project>emptyList());
JSONRestWriter restWriter = new JSONRestWriter(writer, "http://example.org");
marshalSubprojects(subprojects, restWriter);
assertEqualsJSON(COMMON_PART_JSON + ",\"items\":[]}");
}
@Test
public void testMarshalSubprojectsXML() throws Exception {
Subprojects subprojects = newSubprojects();
XMLRestWriter restWriter = new XMLRestWriter(writer, "http://example.org");
marshalSubprojects(subprojects, restWriter);
assertEqualsXML(COMMON_PART_XML
+ CommonProjectConverterTest.MINIMAL_PROJECT_XML(TestUUIDs.TEST_UUIDS[3], "id1", "name1", false)
+ CommonProjectConverterTest.MINIMAL_PROJECT_XML(TestUUIDs.TEST_UUIDS[4], "id2", "name2", false)
+ CommonProjectConverterTest.MINIMAL_PROJECT_XML(TestUUIDs.TEST_UUIDS[5], "id2", "name2", false)
+"</subprojects>");
}
@Test
public void testMarshalSubprojectsJSON() throws Exception {
Subprojects subprojects = newSubprojects();
JSONRestWriter restWriter = new JSONRestWriter(writer, "http://example.org");
marshalSubprojects(subprojects, restWriter);
assertEqualsJSON(COMMON_PART_JSON
+ ",\"items\":["
+ CommonProjectConverterTest.MINIMAL_PROJECT_JSON(TestUUIDs.TEST_UUIDS[3], "id1", "name1", false)
+ "," + CommonProjectConverterTest.MINIMAL_PROJECT_JSON(TestUUIDs.TEST_UUIDS[4], "id2", "name2", false)
+ "," + CommonProjectConverterTest.MINIMAL_PROJECT_JSON(TestUUIDs.TEST_UUIDS[5], "id2", "name2", false)
+"]}");
}
private Subprojects newSubprojects() {
List<Project> projects = new ArrayList<Project>();
projects.add(newMinimalProject(TestUUIDs.TEST_UUIDS[3], "id1", "name1"));
projects.add(newMinimalProject(TestUUIDs.TEST_UUIDS[4], "id2", "name2"));
projects.add(newMinimalProject(TestUUIDs.TEST_UUIDS[5], "id2", "name2"));
Subprojects subprojects = new Subprojects(TestUUIDs.TEST_UUIDS[0], projects);
return subprojects;
}
private void marshalSubprojects(Subprojects subprojects, RestWriter restWriter) throws Exception {
SubprojectsConverter converter = new SubprojectsConverter();
converter.marshal(subprojects, restWriter);
restWriter.flush();
}
}