package com.trywildcard.pair.model.review;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.trywildcard.pair.exception.CardBuilderException;
import com.trywildcard.pair.util.DummyReview;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.text.ParseException;
/**
* Created by karthiksenthil on 10/5/14.
*/
public class ReviewBuilderTest {
private static DummyReview dummyReview;
@BeforeClass
public static void prepare() throws ParseException, CardBuilderException {
dummyReview = new DummyReview();
}
private void testMinimalReviewAttributes(Review review){
Assert.assertEquals("Name should match", dummyReview.title, review.getTitle());
Assert.assertEquals("HtmlContent should match", dummyReview.htmlContent, review.getHtmlContent());
}
private Review buildMinimalReview() throws CardBuilderException {
ReviewBuilder reviewBuilder = new ReviewBuilder(dummyReview.title, dummyReview.htmlContent);
return reviewBuilder.build();
}
@Test
public void testMinimalReview() throws JsonProcessingException, CardBuilderException {
Review review = buildMinimalReview();
testMinimalReviewAttributes(review);
}
@Test
public void testMinimalReviewWithMinimalConstructor() throws CardBuilderException {
Review review = new ReviewBuilder(dummyReview.title, dummyReview.htmlContent).build();
testMinimalReviewAttributes(review);
}
private void testExtensiveReviewAttributes(Review review) throws MalformedURLException {
testMinimalReviewAttributes(review);
Assert.assertEquals("productName should match", dummyReview.productName, review.getProductName());
Assert.assertEquals("productName should match", dummyReview.rating, review.getRating());
Assert.assertEquals("Abstract should match", dummyReview.abstractContent, review.getAbstractContent());
Assert.assertEquals("Publication Date should match", dummyReview.publicationDate, review.getPublicationDate());
Assert.assertEquals("Updated Date should match", dummyReview.updatedDate, review.getUpdatedDate());
Assert.assertEquals("Author should match", dummyReview.author, review.getAuthor());
Assert.assertEquals("Media should match", dummyReview.image, review.getMedia());
Assert.assertEquals("Source should match", dummyReview.source, review.getSource());
}
private Review buildExtensiveReview() throws CardBuilderException {
ReviewBuilder builder = new ReviewBuilder(dummyReview.title, dummyReview.htmlContent);
builder.productName(dummyReview.productName);
builder.rating(dummyReview.rating);
builder.abstractContent(dummyReview.abstractContent);
builder.author(dummyReview.author);
builder.media(dummyReview.image);
builder.publicationDate(dummyReview.publicationDate);
builder.updatedDate(dummyReview.updatedDate);
builder.source(dummyReview.source);
return builder.build();
}
@Test
public void testExtensiveReviewTest() throws IOException, URISyntaxException, CardBuilderException {
Review review = buildExtensiveReview();
testExtensiveReviewAttributes(review);
}
}