/******************************************************************************* * 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.model.ext.misc.internal; import java.util.Arrays; import java.util.List; import java.util.UUID; import org.eclipse.skalli.commons.UUIDList; import org.eclipse.skalli.model.Project; import org.eclipse.skalli.model.ext.misc.RelatedProjectsExt; import org.eclipse.skalli.services.project.ProjectService; import org.eclipse.skalli.services.rest.RestWriter; import org.eclipse.skalli.testutil.BundleManager; import org.eclipse.skalli.testutil.RestWriterTestBase; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @SuppressWarnings("nls") public class RelatedProjectsConverterTest extends RestWriterTestBase { private List<Project> projects; private ProjectService projectService; @Override @Before public void setup() throws Exception { super.setup(); projectService = BundleManager.getRequiredService(ProjectService.class); projects = projectService.getAll(); Assert.assertTrue("projects.size() > 0", projects.size() > 0); } @Test public void testMarshalBlankExtensionXML() throws Exception { RelatedProjectsExt related = new RelatedProjectsExt(); RestWriter restWriter = getRestWriterXML(); marshalRelatedProjects(related, restWriter); assertEqualsXML("<relatedProjects><calculated>false</calculated></relatedProjects>"); } @Test public void testMarshalExtensionXML() throws Exception { RelatedProjectsExt related = newRelatedProjects(); RestWriter restWriter = getRestWriterXML(); marshalRelatedProjects(related, restWriter); assertEqualsXML("<relatedProjects>" + "<calculated>false</calculated>" + "<link rel=\"project\" href=\"http://example.org:8080/api/projects/ab721fce-25c7-4c9f-b5ad-9f1f59b23b6a\"/>" + "<link rel=\"project\" href=\"http://example.org:8080/api/projects/5856b08a-0f87-4d91-b007-ac367ced247a\"/>" + "</relatedProjects>"); } @Test public void testMarshalBlankExtensionJSON() throws Exception { RelatedProjectsExt related = new RelatedProjectsExt(); RestWriter restWriter = getRestWriterJSON(); marshalRelatedProjects(related, restWriter); assertEqualsJSON("{\"calculated\":false,\"links\":[]}"); } @Test public void testMarshalExtensionJSON() throws Exception { RelatedProjectsExt related = newRelatedProjects(); RestWriter restWriter = getRestWriterJSON(); marshalRelatedProjects(related, restWriter); assertEqualsJSON("{\"calculated\":false,\"links\":[" + "{\"rel\":\"project\",\"href\":\"http://example.org:8080/api/projects/ab721fce-25c7-4c9f-b5ad-9f1f59b23b6a\"," + "\"uuid\":\"ab721fce-25c7-4c9f-b5ad-9f1f59b23b6a\",\"id\":\"testproject\",\"name\":\"Test Project\"}," + "{\"rel\":\"project\",\"href\":\"http://example.org:8080/api/projects/5856b08a-0f87-4d91-b007-ac367ced247a\"," + "\"uuid\":\"5856b08a-0f87-4d91-b007-ac367ced247a\",\"id\":\"eclipse.skalli\",\"name\":\"Skalli\"}" + "]}"); } private RelatedProjectsExt newRelatedProjects() { RelatedProjectsExt related = new RelatedProjectsExt(); List<UUID> uuids = Arrays.asList( UUID.fromString("ab721fce-25c7-4c9f-b5ad-9f1f59b23b6a"), UUID.fromString("5856b08a-0f87-4d91-b007-ac367ced247a")); related.setRelatedProjects(new UUIDList(uuids)); return related; } private void marshalRelatedProjects(RelatedProjectsExt related, RestWriter restWriter) throws Exception { RelatedProjectsConverter converter = new RelatedProjectsConverter(); restWriter.object("relatedProjects"); converter.marshal(related, restWriter); restWriter.end(); restWriter.flush(); } }