/******************************************************************************* * 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 org.eclipse.skalli.model.ext.misc.ProjectRating; import org.eclipse.skalli.model.ext.misc.ProjectRatingStyle; import org.eclipse.skalli.model.ext.misc.ReviewEntry; import org.eclipse.skalli.model.ext.misc.ReviewProjectExt; import org.eclipse.skalli.services.rest.RestWriter; import org.eclipse.skalli.testutil.RestWriterTestBase; import org.junit.Test; @SuppressWarnings("nls") public class ReviewConverterTest extends RestWriterTestBase { private static final long NOW = System.currentTimeMillis(); @Test public void testMarshalBlankExtensionXML() throws Exception { ReviewProjectExt reviews = new ReviewProjectExt(); RestWriter restWriter = getRestWriterXML(); marshalRelatedProjects(reviews, restWriter); assertEqualsXML("<reviews>" +"<ratingStyle>TWO_STATES</ratingStyle>" +"<allowAnonymous>false</allowAnonymous>" +"<numberVotes>0</numberVotes>" +"<numberThumbsUp>0</numberThumbsUp>" +"<numberThumbsDown>0</numberThumbsDown>" +"<averageRating>NONE</averageRating>" + "</reviews>"); } @Test public void testMarshalExtensionXML() throws Exception { ReviewProjectExt reviews = newReviews(); RestWriter restWriter = getRestWriterXML(); marshalRelatedProjects(reviews, restWriter); assertEqualsXML("<reviews>" +"<ratingStyle>FIVE_STATES</ratingStyle>" +"<allowAnonymous>true</allowAnonymous>" +"<numberVotes>3</numberVotes>" +"<numberThumbsUp>1</numberThumbsUp>" +"<numberThumbsDown>1</numberThumbsDown>" +"<averageRating>FACE_PLAIN</averageRating>" + "<review><voter>homer</voter><comment>foo</comment>" + "<timestamp>" + NOW + "</timestamp><rating>FACE_CRYING</rating></review>" + "<review><voter>marge</voter><comment>bar</comment>" + "<timestamp>" + (NOW+10) + "</timestamp><rating>FACE_PLAIN</rating></review>" + "<review><voter>bart</voter><comment>foobar</comment>" + "<timestamp>" + (NOW+20) + "</timestamp><rating>FACE_SMILE</rating></review>" + "</reviews>"); } @Test public void testMarshalBlankExtensionJSON() throws Exception { ReviewProjectExt reviews = new ReviewProjectExt(); RestWriter restWriter = getRestWriterJSON(); marshalRelatedProjects(reviews, restWriter); assertEqualsJSON("{" + "\"ratingStyle\":\"TWO_STATES\"" + ",\"allowAnonymous\":false" + ",\"numberVotes\":0" + ",\"numberThumbsUp\":0" + ",\"numberThumbsDown\":0" + ",\"averageRating\":\"NONE\"" + ",\"items\":[]}"); } @Test public void testMarshalExtensionJSON() throws Exception { ReviewProjectExt reviews = newReviews(); RestWriter restWriter = getRestWriterJSON(); marshalRelatedProjects(reviews, restWriter); assertEqualsJSON("{" + "\"ratingStyle\":\"FIVE_STATES\"" + ",\"allowAnonymous\":true" + ",\"numberVotes\":3" + ",\"numberThumbsUp\":1" + ",\"numberThumbsDown\":1" + ",\"averageRating\":\"FACE_PLAIN\"" + ",\"items\":[" + "{\"voter\":\"homer\",\"comment\":\"foo\"," + "\"timestamp\":" + NOW + ",\"rating\":\"FACE_CRYING\"}," + "{\"voter\":\"marge\",\"comment\":\"bar\"," + "\"timestamp\":" + (NOW+10) + ",\"rating\":\"FACE_PLAIN\"}," + "{\"voter\":\"bart\",\"comment\":\"foobar\"," + "\"timestamp\":" + (NOW+20) + ",\"rating\":\"FACE_SMILE\"}" + "]}"); } private ReviewProjectExt newReviews() { ReviewProjectExt reviews = new ReviewProjectExt(); reviews.setAllowAnonymous(true); reviews.setRatingStyle(ProjectRatingStyle.FIVE_STATES); reviews.addReview(new ReviewEntry(ProjectRating.FACE_CRYING, "foo", "homer", NOW)); reviews.addReview(new ReviewEntry(ProjectRating.FACE_PLAIN, "bar", "marge", NOW+10)); reviews.addReview(new ReviewEntry(ProjectRating.FACE_SMILE, "foobar", "bart", NOW+20)); return reviews; } private void marshalRelatedProjects(ReviewProjectExt reviews, RestWriter restWriter) throws Exception { ReviewConverter converter = new ReviewConverter(); restWriter.object("reviews"); converter.marshal(reviews, restWriter); restWriter.end(); restWriter.flush(); } }