package com.trywildcard.pair.model.product; import com.trywildcard.pair.exception.CardBuilderException; import com.trywildcard.pair.extraction.MetaTagModel; import com.trywildcard.pair.util.DummyOffer; import org.junit.Before; import org.junit.Test; import java.text.ParseException; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Created by michaelgarate on 7/1/14. */ public class OfferBuilderValidationTest { DummyOffer dummyOffer; @Before public void setUp() throws ParseException, CardBuilderException { dummyOffer = new DummyOffer(); } @Test public void isValidWithAttributes() throws CardBuilderException { OfferBuilder builder = new OfferBuilder(dummyOffer.price); Offer offer = builder.build(); assertEquals("Price should match", dummyOffer.price, offer.getPrice()); assertEquals("Number of errors should match", 0, builder.getErrors().size()); } @Test(expected = CardBuilderException.class) public void isInvalidWithNegativePrice() throws CardBuilderException { OfferBuilder builder = new OfferBuilder(-12.99f); } @Test(expected = CardBuilderException.class) public void isInvalidWithNullPrice() throws CardBuilderException { Map<Integer, Float> emptyMap = new HashMap<Integer, Float>(); Float productPrice = emptyMap.get(0); OfferBuilder builder = new OfferBuilder(productPrice); } @Test public void hasErrorForEmptyWeightunitsString() throws CardBuilderException { OfferBuilder builder = new OfferBuilder(dummyOffer.price); builder.weightUnits(""); assertEquals("Number of errors should match", 1, builder.getErrors().size()); } @Test public void hasErrorForNegativeWeight() throws CardBuilderException { OfferBuilder builder = new OfferBuilder(dummyOffer.price); builder.weight(-50f); assertEquals("Number of errors should match", 1, builder.getErrors().size()); } @Test public void hasErrorForNullGeographicAvailability() throws CardBuilderException { OfferBuilder builder = new OfferBuilder(dummyOffer.price); builder.geographicAvailability(null); assertEquals("Number of errors should match", 1, builder.getErrors().size()); } @Test public void hasErrorForNegativeQuantity() throws CardBuilderException { OfferBuilder builder = new OfferBuilder(dummyOffer.price); builder.quantity(-5); assertEquals("Number of errors should match", 1, builder.getErrors().size()); } @Test public void hasErrorForEmptyDescriptionString() throws CardBuilderException { OfferBuilder builder = new OfferBuilder(dummyOffer.price); builder.description(""); assertEquals("Number of errors should match", 1, builder.getErrors().size()); } @Test(expected = CardBuilderException.class) public void nullMetaTagModel() throws CardBuilderException { MetaTagModel metaTagModel = null; Offer offer = new OfferBuilder(metaTagModel).build(); } @Test(expected = CardBuilderException.class) public void inCompleteMetaTagModelNull() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getPrice()).thenReturn(null); Offer offer = new OfferBuilder(metaTagModel).build(); } @Test(expected = CardBuilderException.class) public void inValidMetaTagPrice() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getPrice()).thenReturn("Not Valid Integer"); Offer offer = new OfferBuilder(metaTagModel).build(); } @Test public void validMetaTagPrice() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getPrice()).thenReturn("15"); Offer offer = new OfferBuilder(metaTagModel).build(); assertEquals(offer.getPrice().getPrice(), new Float(15f)); } }