package com.trywildcard.pair.model.creator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.trywildcard.pair.exception.CardBuilderException;
import com.trywildcard.pair.util.DummyCreator;
import com.trywildcard.pair.util.TestUtil;
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 cmcewen on 2/2/15.
*/
public class CreatorBuilderTest {
ObjectMapper mapper = TestUtil.getObjectMapper();
private static DummyCreator dummyCreator;
@BeforeClass
public static void prepare() throws ParseException, CardBuilderException, MalformedURLException {
dummyCreator = new DummyCreator();
}
private void testMinimalCreatorAttributes(Creator creator){
Assert.assertEquals("Name should match", dummyCreator.name, creator.getName());
Assert.assertEquals("Favicon should match", dummyCreator.testFavicon, creator.getFavicon());
}
private Creator buildMinimalCreator() throws CardBuilderException {
CreatorBuilder creatorBuilder = new CreatorBuilder(dummyCreator.name, dummyCreator.favicon);
return creatorBuilder.build();
}
@Test
public void testMinimalCreator() throws JsonProcessingException, CardBuilderException {
Creator creator = buildMinimalCreator();
testMinimalCreatorAttributes(creator);
}
@Test
public void testMinimalCreatorWithMinimalConstructor() throws CardBuilderException {
Creator creator = new CreatorBuilder(dummyCreator.name, dummyCreator.favicon).build();
testMinimalCreatorAttributes(creator);
}
private void testExtensiveCardAttributes(Creator creator) throws MalformedURLException {
testMinimalCreatorAttributes(creator);
Assert.assertEquals("Ios App Store Url should match", dummyCreator.iosAppStoreUrl, creator.getIosAppStoreUrl());
Assert.assertEquals("Android App Store Url should match", dummyCreator.androidAppStoreUrl, creator.getAndroidAppStoreUrl());
Assert.assertEquals("creator Url should match", dummyCreator.testUrl, creator.getUrl());
}
public Creator buildExtensiveCreator() throws CardBuilderException {
CreatorBuilder builder = new CreatorBuilder(dummyCreator.name, dummyCreator.favicon);
builder.iosAppStoreUrl(dummyCreator.iosAppStoreUrl);
builder.androidAppStoreUrl(dummyCreator.androidAppStoreUrl);
builder.url(dummyCreator.url);
return builder.build();
}
@Test
public void testExtensiveCreatorTest() throws IOException, URISyntaxException, CardBuilderException {
Creator creator = buildExtensiveCreator();
testExtensiveCardAttributes(creator);
}
}