package org.schabi.newpipe.extractor.services.youtube; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.ListExtractor; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.playlist.PlaylistExtractor; import org.schabi.newpipe.extractor.services.BaseListExtractorTest; import org.schabi.newpipe.extractor.services.BasePlaylistExtractorTest; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl; import static org.schabi.newpipe.extractor.ServiceList.YouTube; /** * Test for {@link YoutubePlaylistExtractor} */ @RunWith(Enclosed.class) public class YoutubePlaylistExtractorTest { public static class TimelessPopHits implements BasePlaylistExtractorTest { private static YoutubePlaylistExtractor extractor; @BeforeClass public static void setUp() throws Exception { NewPipe.init(Downloader.getInstance()); extractor = (YoutubePlaylistExtractor) YouTube .getPlaylistExtractor("http://www.youtube.com/watch?v=lp-EO5I60KA&list=PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj"); extractor.fetchPage(); } /*////////////////////////////////////////////////////////////////////////// // Extractor //////////////////////////////////////////////////////////////////////////*/ @Test public void testServiceId() { assertEquals(YouTube.getServiceId(), extractor.getServiceId()); } @Test public void testName() throws Exception { String name = extractor.getName(); assertTrue(name, name.startsWith("Pop Music Playlist: Timeless Pop Hits")); } @Test public void testId() throws Exception { assertEquals("PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj", extractor.getId()); } @Test public void testCleanUrl() { assertEquals("https://www.youtube.com/playlist?list=PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj", extractor.getCleanUrl()); } @Test public void testOriginalUrl() { assertEquals("http://www.youtube.com/watch?v=lp-EO5I60KA&list=PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj", extractor.getOriginalUrl()); } /*////////////////////////////////////////////////////////////////////////// // ListExtractor //////////////////////////////////////////////////////////////////////////*/ @Test public void testRelatedItems() throws Exception { BaseListExtractorTest.defaultTestRelatedItems(extractor, YouTube.getServiceId()); } @Test public void testMoreRelatedItems() throws Exception { BaseListExtractorTest.defaultTestMoreItems(extractor, ServiceList.YouTube.getServiceId()); } /*////////////////////////////////////////////////////////////////////////// // PlaylistExtractor //////////////////////////////////////////////////////////////////////////*/ @Test public void testThumbnailUrl() throws Exception { final String thumbnailUrl = extractor.getThumbnailUrl(); assertIsSecureUrl(thumbnailUrl); assertTrue(thumbnailUrl, thumbnailUrl.contains("yt")); } @Test public void testBannerUrl() throws Exception { final String bannerUrl = extractor.getBannerUrl(); assertIsSecureUrl(bannerUrl); assertTrue(bannerUrl, bannerUrl.contains("yt")); } @Test public void testUploaderUrl() throws Exception { assertTrue(extractor.getUploaderUrl().contains("youtube.com")); } @Test public void testUploaderName() throws Exception { final String uploaderName = extractor.getUploaderName(); assertTrue(uploaderName, uploaderName.contains("Just Hits")); } @Test public void testUploaderAvatarUrl() throws Exception { final String uploaderAvatarUrl = extractor.getUploaderAvatarUrl(); assertTrue(uploaderAvatarUrl, uploaderAvatarUrl.contains("yt")); } @Test public void testStreamCount() throws Exception { assertTrue("Error in the streams count", extractor.getStreamCount() > 100); } } public static class ImportantVideos implements BasePlaylistExtractorTest { private static YoutubePlaylistExtractor extractor; @BeforeClass public static void setUp() throws Exception { NewPipe.init(Downloader.getInstance()); extractor = (YoutubePlaylistExtractor) YouTube .getPlaylistExtractor("https://www.youtube.com/playlist?list=PLOy0j9AvlVZPto6IkjKfpu0Scx--7PGTC"); extractor.fetchPage(); } /*////////////////////////////////////////////////////////////////////////// // Additional Testing //////////////////////////////////////////////////////////////////////////*/ @Test public void testGetPageInNewExtractor() throws Exception { final PlaylistExtractor newExtractor = YouTube.getPlaylistExtractor(extractor.getCleanUrl()); BaseListExtractorTest.defaultTestGetPageInNewExtractor(extractor, newExtractor, YouTube.getServiceId()); } /*////////////////////////////////////////////////////////////////////////// // Extractor //////////////////////////////////////////////////////////////////////////*/ @Test public void testServiceId() { assertEquals(YouTube.getServiceId(), extractor.getServiceId()); } @Test public void testName() throws Exception { String name = extractor.getName(); assertTrue(name, name.contains("Important videos")); } @Test public void testId() throws Exception { assertEquals("PLOy0j9AvlVZPto6IkjKfpu0Scx--7PGTC", extractor.getId()); } @Test public void testCleanUrl() { assertEquals("https://www.youtube.com/playlist?list=PLOy0j9AvlVZPto6IkjKfpu0Scx--7PGTC", extractor.getCleanUrl()); } @Test public void testOriginalUrl() { assertEquals("https://www.youtube.com/playlist?list=PLOy0j9AvlVZPto6IkjKfpu0Scx--7PGTC", extractor.getOriginalUrl()); } /*////////////////////////////////////////////////////////////////////////// // ListExtractor //////////////////////////////////////////////////////////////////////////*/ @Test public void testRelatedItems() throws Exception { BaseListExtractorTest.defaultTestRelatedItems(extractor, YouTube.getServiceId()); } @Test public void testMoreRelatedItems() throws Exception { ListExtractor.InfoItemPage currentPage = BaseListExtractorTest.defaultTestMoreItems(extractor, ServiceList.YouTube.getServiceId()); // Test for 2 more levels for (int i = 0; i < 2; i++) { currentPage = extractor.getPage(currentPage.getNextPageUrl()); BaseListExtractorTest.defaultTestListOfItems(YouTube.getServiceId(), currentPage.getItemsList(), currentPage.getErrors()); } } /*////////////////////////////////////////////////////////////////////////// // PlaylistExtractor //////////////////////////////////////////////////////////////////////////*/ @Test public void testThumbnailUrl() throws Exception { final String thumbnailUrl = extractor.getThumbnailUrl(); assertIsSecureUrl(thumbnailUrl); assertTrue(thumbnailUrl, thumbnailUrl.contains("yt")); } @Test public void testBannerUrl() throws Exception { final String bannerUrl = extractor.getBannerUrl(); assertIsSecureUrl(bannerUrl); assertTrue(bannerUrl, bannerUrl.contains("yt")); } @Test public void testUploaderUrl() throws Exception { assertTrue(extractor.getUploaderUrl().contains("youtube.com")); } @Test public void testUploaderName() throws Exception { assertEquals("Crazy Horse", extractor.getUploaderName()); } @Test public void testUploaderAvatarUrl() throws Exception { final String uploaderAvatarUrl = extractor.getUploaderAvatarUrl(); assertTrue(uploaderAvatarUrl, uploaderAvatarUrl.contains("yt")); } @Test public void testStreamCount() throws Exception { assertTrue("Error in the streams count", extractor.getStreamCount() > 100); } } }