package com.trywildcard.pair.model.summary; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.trywildcard.pair.exception.CardBuilderException; import com.trywildcard.pair.model.article.ArticleCard; import com.trywildcard.pair.util.DummySummary; import com.trywildcard.pair.util.TestUtil; import org.junit.BeforeClass; import org.junit.Test; import java.io.IOException; import java.text.ParseException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; /** * Created by karthiksenthil on 1/28/15. */ public class SummaryCardTest { ObjectMapper mapper = TestUtil.getObjectMapper(); private static DummySummary dummySummary; @BeforeClass public static void prepare() throws ParseException, CardBuilderException { dummySummary = new DummySummary(); } private void testMinimalCardAttributes(SummaryCard card){ assertEquals("Summary Title should match", dummySummary.title, card.getSummary().getTitle()); assertEquals("Summary HtmlContent should match", dummySummary.description, card.getSummary().getDescription()); assertEquals("Web url should match", dummySummary.webUrl, card.getWebUrl().toString()); } private SummaryCard buildMinimalSummaryCard() throws CardBuilderException { Summary summary = new Summary(dummySummary.title, dummySummary.description); SummaryCard summaryCard = new SummaryCard(summary, dummySummary.webUrl); return summaryCard; } @Test public void testMinimalSummaryCard() throws JsonProcessingException, CardBuilderException { SummaryCard card = buildMinimalSummaryCard(); testMinimalCardAttributes(card); } @Test public void testMinimalArticleCardWithMinimalConstructor() throws CardBuilderException { Summary summary = new Summary(dummySummary.title, dummySummary.description); SummaryCard summaryCard = new SummaryCard(summary, dummySummary.webUrl); testMinimalCardAttributes(summaryCard); } @Test public void testNullKeywords() throws CardBuilderException { Summary summary = new Summary(dummySummary.title, dummySummary.description); SummaryCard summaryCard = new SummaryCard(summary, dummySummary.webUrl); summaryCard.setKeywords(null); assertNull(summaryCard.getKeywords()); } @Test public void testExtensiveWriteAsJsonMethod() throws JsonParseException, JsonMappingException, IOException, CardBuilderException { String inputString = TestUtil.readResourceAsString("example_summary_card.json"); SummaryCard fixtureCard = mapper.readValue(inputString, SummaryCard.class); Summary generatedSummary = buildExtensiveSummary(); SummaryCard generatedCard = new SummaryCard(generatedSummary, dummySummary.webUrl); generatedCard.setKeywords(dummySummary.keywords); generatedCard.setAppLinkAndroid(dummySummary.appLinkAndroid); generatedCard.setAppLinkIos(dummySummary.appLinkAndroid); System.out.println(generatedCard.writeAsJsonString()); assertEquals(mapper.writeValueAsString(fixtureCard), generatedCard.writeAsJsonString()); } @Test(expected = CardBuilderException.class) public void isInvalidWithNullSummary() throws CardBuilderException { SummaryCard card = new SummaryCard(null, dummySummary.webUrl); } @Test(expected = CardBuilderException.class) public void isInvalidWithBothNull() throws CardBuilderException { ArticleCard card = new ArticleCard(null, null); } @Test(expected = CardBuilderException.class) public void isInvalidWithNullWebUrl() throws CardBuilderException { Summary summary = new Summary(dummySummary.title, dummySummary.description); SummaryCard card = new SummaryCard(summary, null); } private Summary buildExtensiveSummary() throws CardBuilderException { Summary summary = new Summary(dummySummary.title, dummySummary.description); summary.setSubtitle(dummySummary.subtitle); summary.setMedia(dummySummary.image); return summary; } }