diff --git a/src/test/java/org/schabi/newpipe/extractor/services/youtube/BaseYoutubeSearchTest.java b/src/test/java/org/schabi/newpipe/extractor/services/youtube/BaseYoutubeSearchTest.java new file mode 100644 index 00000000..41ef1517 --- /dev/null +++ b/src/test/java/org/schabi/newpipe/extractor/services/youtube/BaseYoutubeSearchTest.java @@ -0,0 +1,55 @@ +package org.schabi.newpipe.extractor.services.youtube; + +import org.junit.Test; +import org.schabi.newpipe.extractor.InfoItem; +import org.schabi.newpipe.extractor.channel.ChannelInfoItem; +import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem; +import org.schabi.newpipe.extractor.search.SearchResult; +import org.schabi.newpipe.extractor.stream.StreamInfoItem; + +import static org.junit.Assert.*; +import static org.junit.Assert.assertTrue; +import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl; + +public abstract class BaseYoutubeSearchTest { + + protected static SearchResult result; + + @Test + public void testResultList() { + assertFalse("Got empty result list", result.resultList.isEmpty()); + for(InfoItem infoItem: result.resultList) { + assertIsSecureUrl(infoItem.getUrl()); + assertIsSecureUrl(infoItem.getThumbnailUrl()); + assertFalse(infoItem.getName().isEmpty()); + assertFalse("Name is probably a URI: " + infoItem.getName(), + infoItem.getName().contains("://")); + if(infoItem instanceof StreamInfoItem) { + // test stream item + StreamInfoItem streamInfoItem = (StreamInfoItem) infoItem; + assertIsSecureUrl(streamInfoItem.getUploaderUrl()); + assertFalse(streamInfoItem.getUploadDate().isEmpty()); + assertFalse(streamInfoItem.getUploaderName().isEmpty()); + } else if(infoItem instanceof ChannelInfoItem) { + // Nothing special to check? + } else if(infoItem instanceof PlaylistInfoItem) { + // test playlist item + long streamCount = ((PlaylistInfoItem) infoItem).getStreamCount(); + assertTrue(streamCount > 0); + } else { + fail("Unknown infoItem type: " + infoItem); + } + } + } + + @Test + public void testResultErrors() { + assertNotNull(result.errors); + if (!result.errors.isEmpty()) { + for (Throwable error : result.errors) { + error.printStackTrace(); + } + } + assertTrue(result.errors.isEmpty()); + } +} diff --git a/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineAllTest.java b/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineAllTest.java index 4f6701b3..b24956b1 100644 --- a/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineAllTest.java +++ b/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineAllTest.java @@ -40,8 +40,7 @@ import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsValidUrl; /** * Test for {@link SearchEngine} */ -public class YoutubeSearchEngineAllTest { - private static SearchResult result; +public class YoutubeSearchEngineAllTest extends BaseYoutubeSearchTest { @BeforeClass public static void setUpClass() throws Exception { @@ -53,29 +52,13 @@ public class YoutubeSearchEngineAllTest { } @Test - public void testResultList() { - final List results = result.getResults(); - assertFalse("Results are empty: " + results, results.isEmpty()); - - InfoItem firstInfoItem = results.get(0); + public void testResultList_FirstElement() { + InfoItem firstInfoItem = result.getResults().get(0); // THe channel should be the first item assertTrue(firstInfoItem instanceof ChannelInfoItem); assertEquals("name", "PewDiePie", firstInfoItem.name); assertEquals("url","https://www.youtube.com/user/PewDiePie", firstInfoItem.url); - - for(InfoItem item: results) { - assertIsValidUrl(item.url); - } - - } - - @Test - public void testResultErrors() { - for (Throwable error : result.getErrors()) { - error.printStackTrace(); - } - assertTrue(result.getErrors().isEmpty()); } @Ignore diff --git a/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineChannelTest.java b/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineChannelTest.java index b1eb2c68..79f1b20a 100644 --- a/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineChannelTest.java +++ b/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineChannelTest.java @@ -37,8 +37,7 @@ import static org.schabi.newpipe.extractor.ServiceList.YouTube; /** * Test for {@link SearchEngine} */ -public class YoutubeSearchEngineChannelTest { - private static SearchResult result; +public class YoutubeSearchEngineChannelTest extends BaseYoutubeSearchTest { @BeforeClass public static void setUp() throws Exception { @@ -51,14 +50,6 @@ public class YoutubeSearchEngineChannelTest { .getSearchResult(); } - @Test - public void testResultList() { - assertFalse(result.resultList.isEmpty()); - for(InfoItem item: result.getResults()) { - assertIsValidUrl(item.url); - } - } - @Test public void testResultsItemType() { for (InfoItem infoItem : result.resultList) { @@ -66,13 +57,6 @@ public class YoutubeSearchEngineChannelTest { } } - @Test - public void testResultErrors() { - assertNotNull(result.errors); - if (!result.errors.isEmpty()) for (Throwable error : result.errors) error.printStackTrace(); - assertTrue(result.errors.isEmpty()); - } - @Ignore @Test public void testSuggestion() { diff --git a/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEnginePlaylistTest.java b/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEnginePlaylistTest.java index b6e60404..82882954 100644 --- a/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEnginePlaylistTest.java +++ b/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEnginePlaylistTest.java @@ -6,6 +6,7 @@ import org.junit.Test; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.NewPipe; +import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem; import org.schabi.newpipe.extractor.search.SearchEngine; import org.schabi.newpipe.extractor.search.SearchResult; @@ -37,8 +38,7 @@ import static org.schabi.newpipe.extractor.ServiceList.YouTube; /** * Test for {@link SearchEngine} */ -public class YoutubeSearchEnginePlaylistTest { - private static SearchResult result; +public class YoutubeSearchEnginePlaylistTest extends BaseYoutubeSearchTest { @BeforeClass public static void setUp() throws Exception { @@ -52,27 +52,13 @@ public class YoutubeSearchEnginePlaylistTest { } @Test - public void testResultList() { - assertFalse(result.resultList.isEmpty()); - for(InfoItem item: result.getResults()) { - assertIsValidUrl(item.url); - } - } - - @Test - public void testUserItemType() { + public void testInfoItemType() { for (InfoItem infoItem : result.resultList) { + assertTrue(infoItem instanceof PlaylistInfoItem); assertEquals(InfoItem.InfoType.PLAYLIST, infoItem.info_type); } } - @Test - public void testResultErrors() { - assertNotNull(result.errors); - if (!result.errors.isEmpty()) for (Throwable error : result.errors) error.printStackTrace(); - assertTrue(result.errors.isEmpty()); - } - @Ignore @Test public void testSuggestion() { diff --git a/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineStreamTest.java b/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineStreamTest.java index 9ca94649..170419c5 100644 --- a/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineStreamTest.java +++ b/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngineStreamTest.java @@ -37,8 +37,7 @@ import static org.schabi.newpipe.extractor.ServiceList.YouTube; /** * Test for {@link SearchEngine} */ -public class YoutubeSearchEngineStreamTest { - private static SearchResult result; +public class YoutubeSearchEngineStreamTest extends BaseYoutubeSearchTest { @BeforeClass public static void setUp() throws Exception { @@ -51,14 +50,6 @@ public class YoutubeSearchEngineStreamTest { .getSearchResult(); } - @Test - public void testResultList() { - assertFalse(result.resultList.isEmpty()); - for(InfoItem item: result.getResults()) { - assertIsValidUrl(item.url); - } - } - @Test public void testResultsItemType() { for (InfoItem infoItem : result.resultList) { @@ -66,13 +57,6 @@ public class YoutubeSearchEngineStreamTest { } } - @Test - public void testResultErrors() { - assertNotNull(result.errors); - if (!result.errors.isEmpty()) for (Throwable error : result.errors) error.printStackTrace(); - assertTrue(result.errors.isEmpty()); - } - @Ignore @Test public void testSuggestion() {