package com.trywildcard.pair.model.media; import com.trywildcard.pair.exception.CardBuilderException; import com.trywildcard.pair.extraction.MetaTagModel; import com.trywildcard.pair.util.DummyVideo; import org.junit.Before; import org.junit.Test; import java.text.ParseException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Created by karthiksenthil on 10/5/14. */ public class VideoBuilderValidationTest { DummyVideo dummyVideo; VideoBuilder builder; @Before public void setUp() throws ParseException, CardBuilderException { dummyVideo = new DummyVideo(); builder = new VideoBuilder(dummyVideo.title, dummyVideo.embeddedURL, dummyVideo.embeddedURLHeight, dummyVideo.embeddedURLWidth); } @Test public void isValidWithAttributes(){ assertEquals(0,builder.getErrors().size()); } @Test(expected = CardBuilderException.class) public void isInvalidWithEmptyTitleString() throws CardBuilderException { Video video = new VideoBuilder("", dummyVideo.embeddedURL, dummyVideo.embeddedURLHeight, dummyVideo.embeddedURLWidth).build(); } @Test(expected = CardBuilderException.class) public void isInvalidWithEmptyEmbedUrlContent() throws CardBuilderException { Video video = new VideoBuilder(dummyVideo.title, "", dummyVideo.embeddedURLHeight, dummyVideo.embeddedURLWidth).build(); } @Test(expected = CardBuilderException.class) public void isInvalidWithNegativeHeight() throws CardBuilderException { Video video = new VideoBuilder(dummyVideo.title, dummyVideo.embeddedURL, -1, dummyVideo.embeddedURLWidth).build(); } @Test(expected = CardBuilderException.class) public void isInvalidWithNegativeWidth() throws CardBuilderException { Video video = new VideoBuilder(dummyVideo.title, dummyVideo.embeddedURL, dummyVideo.embeddedURLHeight, -1).build(); } @Test(expected = CardBuilderException.class) public void isInvalidWithEmptyTitleAndEmbed() throws CardBuilderException { Video video = new VideoBuilder("", "", dummyVideo.embeddedURLHeight, dummyVideo.embeddedURLWidth).build(); } @Test public void hasErrorForNullPublicationDate (){ assertEquals("Errors size should match", 0, builder.getErrors().size()); builder.publicationDate(null); assertEquals("Errors size should match", 1, builder.getErrors().size()); } @Test public void hasErrorForNullDescription (){ assertEquals("Errors size should match", 0, builder.getErrors().size()); builder.description(null); assertEquals("Errors size should match", 1, builder.getErrors().size()); } @Test public void hasErrorForNullContributorString(){ assertEquals("Errors size should match", 0, builder.getErrors().size()); builder.creator(null); assertEquals("Errors size should match", 1, builder.getErrors().size()); } @Test public void hasErrorForEmptyStreamUrl(){ assertEquals("Errors size should match", 0, builder.getErrors().size()); builder.streamUrl(""); assertEquals("Errors size should match", 1, builder.getErrors().size()); } @Test public void hasErrorForNullStreamContentTypeString(){ assertEquals("Errors size should match", 0, builder.getErrors().size()); builder.streamContentType(null); assertEquals("Errors size should match", 1, builder.getErrors().size()); } @Test public void hasErrorForNullPoster (){ assertEquals("Errors size should match", 0, builder.getErrors().size()); builder.posterImageUrl(""); assertEquals("Errors size should match", 1, builder.getErrors().size()); } @Test public void hasErrorForNullSourceString(){ assertEquals("Errors size should match", 0, builder.getErrors().size()); builder.source(null); assertEquals("Errors size should match", 1, builder.getErrors().size()); } @Test public void hasErrorForEmptySourceString(){ assertEquals("Errors size should match", 0, builder.getErrors().size()); builder.source(""); assertEquals("Errors size should match", 1, builder.getErrors().size()); } @Test(expected = CardBuilderException.class) public void nullMetaTagModel() throws CardBuilderException { Video video = new VideoBuilder(null).build(); } @Test(expected = CardBuilderException.class) public void inCompleteMetaTagModelNull() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getTitle()).thenReturn(null); when(metaTagModel.getVideoUrl()).thenReturn(null); when(metaTagModel.getVideoHeight()).thenReturn(null); when(metaTagModel.getVideoWidth()).thenReturn(null); Video video = new VideoBuilder(metaTagModel).build(); } @Test(expected = CardBuilderException.class) public void inCompleteMetaTagModelEmptyString() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getTitle()).thenReturn(""); when(metaTagModel.getVideoUrl()).thenReturn(""); when(metaTagModel.getVideoHeight()).thenReturn(""); when(metaTagModel.getVideoWidth()).thenReturn(""); Video video = new VideoBuilder(metaTagModel).build(); } @Test(expected = CardBuilderException.class) public void inCompleteMetaTagModelEmptyTitleString() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getTitle()).thenReturn("Title"); when(metaTagModel.getVideoUrl()).thenReturn(""); when(metaTagModel.getVideoHeight()).thenReturn("1280"); when(metaTagModel.getVideoWidth()).thenReturn("720"); Video video = new VideoBuilder(metaTagModel).build(); } @Test(expected = CardBuilderException.class) public void inCompleteMetaTagModelInvalidWidth() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getTitle()).thenReturn("Title"); when(metaTagModel.getVideoUrl()).thenReturn("http://youtube.com"); when(metaTagModel.getVideoHeight()).thenReturn("1280"); when(metaTagModel.getVideoWidth()).thenReturn("h720"); Video video = new VideoBuilder(metaTagModel).build(); } @Test(expected = CardBuilderException.class) public void inCompleteMetaTagModelInvalidHeight() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getTitle()).thenReturn("Title"); when(metaTagModel.getVideoUrl()).thenReturn("http://youtube.com"); when(metaTagModel.getVideoHeight()).thenReturn("1280h"); when(metaTagModel.getVideoWidth()).thenReturn("720"); Video video = new VideoBuilder(metaTagModel).build(); } @Test public void validMetaTagModel() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getTitle()).thenReturn("Title"); when(metaTagModel.getVideoUrl()).thenReturn("http://youtube.com"); when(metaTagModel.getVideoHeight()).thenReturn("1280"); when(metaTagModel.getVideoWidth()).thenReturn("720"); Video video = new VideoBuilder(metaTagModel).build(); assertEquals(video.getEmbeddedUrl().toString(), "http://youtube.com"); assertEquals(video.getEmbeddedUrlHeight(), new Integer(1280)); assertEquals(video.getEmbeddedUrlWidth(), new Integer(720)); assertEquals(video.getTitle(), "Title"); } @Test public void validMetaTagModelInvalidOptional() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getTitle()).thenReturn("Title"); when(metaTagModel.getVideoUrl()).thenReturn("http://youtube.com"); when(metaTagModel.getVideoHeight()).thenReturn("1280"); when(metaTagModel.getVideoWidth()).thenReturn("720"); when(metaTagModel.getImageUrl()).thenReturn(null); when(metaTagModel.getDescription()).thenReturn(""); when(metaTagModel.getAppLinkAndroid()).thenReturn(null); when(metaTagModel.getAppLinkIos()).thenReturn(null); Video video = new VideoBuilder(metaTagModel).build(); assertEquals(video.getEmbeddedUrl().toString(), "http://youtube.com"); assertEquals(video.getEmbeddedUrlHeight(), new Integer(1280)); assertEquals(video.getEmbeddedUrlWidth(), new Integer(720)); assertEquals(video.getTitle(), "Title"); assertNull(video.getDescription()); assertNull(video.getPosterImageUrl()); } @Test public void validMetaTagModelValidOptional() throws CardBuilderException { MetaTagModel metaTagModel = mock(MetaTagModel.class); when(metaTagModel.getTitle()).thenReturn("Youtube Video"); when(metaTagModel.getImageUrl()).thenReturn("https://img0.etsystatic.com/011/0/5147325/il_570xN.444675668_1tp8.jpg"); when(metaTagModel.getVideoUrl()).thenReturn("http://youtube.com"); when(metaTagModel.getVideoHeight()).thenReturn("1280"); when(metaTagModel.getVideoWidth()).thenReturn("720"); when(metaTagModel.getDescription()).thenReturn("Description"); when(metaTagModel.getAppLinkAndroid()).thenReturn("android://youtube/1234"); when(metaTagModel.getAppLinkIos()).thenReturn("ios://youtube/1234"); Video video = new VideoBuilder(metaTagModel).build(); assertEquals(video.getEmbeddedUrl().toString(), "http://youtube.com"); assertEquals(video.getEmbeddedUrlHeight(), new Integer(1280)); assertEquals(video.getEmbeddedUrlWidth(), new Integer(720)); assertEquals(video.getTitle(), "Youtube Video"); assertEquals(video.getPosterImageUrl().toString(), "https://img0.etsystatic.com/011/0/5147325/il_570xN.444675668_1tp8.jpg"); assertEquals(video.getDescription(), "Description"); } }