package com.trywildcard.pair.model.link; 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.util.DummyLink; 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 2/3/15. */ public class LinkCardTest { ObjectMapper mapper = TestUtil.getObjectMapper(); private static DummyLink dummyLink; @BeforeClass public static void prepare() throws ParseException, CardBuilderException { dummyLink = new DummyLink(); } private void testMinimalCardAttributes(LinkCard card){ assertEquals("Link Url should match", dummyLink.url, card.getTarget().getUrl().toString()); } private LinkCard buildMinimalLinkCard() throws CardBuilderException { Target target = new Target(dummyLink.url); LinkCard linkCard = new LinkCard(target); return linkCard; } @Test public void testMinimalLinkCard() throws JsonProcessingException, CardBuilderException { LinkCard card = buildMinimalLinkCard(); testMinimalCardAttributes(card); } @Test public void testMinimalLinkCardWithMinimalConstructor() throws CardBuilderException { Target target = new Target(dummyLink.url); LinkCard linkCard = new LinkCard(target); testMinimalCardAttributes(linkCard); } @Test public void testNullKeywords() throws CardBuilderException { Target target = new Target(dummyLink.url); LinkCard linkCard = new LinkCard(target); linkCard.setKeywords(null); assertNull(linkCard.getKeywords()); } @Test public void testExtensiveWriteAsJsonMethod() throws JsonParseException, JsonMappingException, IOException, CardBuilderException { String inputString = TestUtil.readResourceAsString("example_link_card.json"); LinkCard fixtureCard = mapper.readValue(inputString, LinkCard.class); Target target = buildExtensiveTarget(); LinkCard generatedCard = new LinkCard(target); generatedCard.setWebUrl(dummyLink.webUrl); generatedCard.setKeywords(dummyLink.keywords); generatedCard.setAppLinkAndroid(dummyLink.appLinkAndroid); generatedCard.setAppLinkIos(dummyLink.appLinkAndroid); assertEquals(mapper.writeValueAsString(fixtureCard), generatedCard.writeAsJsonString()); } @Test(expected = CardBuilderException.class) public void isInvalidWithNullTarget() throws CardBuilderException { LinkCard card = new LinkCard(null); } @Test public void isValidWithNullWebUrl() throws CardBuilderException { Target target = new Target(dummyLink.url); LinkCard card = new LinkCard(target, null); assertEquals(card.getTarget(), target); assertNull(card.getWebUrl()); } private Target buildExtensiveTarget() throws CardBuilderException { Target target = new Target(dummyLink.url); target.setTitle(dummyLink.title); target.setDescription(dummyLink.description); target.setPublicationDate(dummyLink.publicationDate); return target; } }