NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudPlaylistExtractor...

434 lines
14 KiB
Java
Raw Normal View History

2017-08-08 08:42:28 +02:00
package org.schabi.newpipe.extractor.services.soundcloud;
import org.junit.BeforeClass;
2021-01-15 20:11:40 +01:00
import org.junit.Ignore;
2017-08-08 08:42:28 +02:00
import org.junit.Test;
import org.schabi.newpipe.downloader.DownloaderTestImpl;
2018-03-04 21:26:13 +01:00
import org.schabi.newpipe.extractor.ListExtractor;
2017-08-08 08:42:28 +02:00
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
2018-03-04 21:26:13 +01:00
import org.schabi.newpipe.extractor.services.BasePlaylistExtractorTest;
import org.schabi.newpipe.extractor.services.soundcloud.extractors.SoundcloudPlaylistExtractor;
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
2017-08-08 08:42:28 +02:00
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
2018-01-04 17:21:03 +01:00
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
2018-03-04 22:22:27 +01:00
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
2017-08-08 08:42:28 +02:00
/**
* Test for {@link PlaylistExtractor}
*/
public class SoundcloudPlaylistExtractorTest {
2018-03-04 21:26:13 +01:00
public static class LuvTape implements BasePlaylistExtractorTest {
private static SoundcloudPlaylistExtractor extractor;
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
@BeforeClass
public static void setUp() throws Exception {
NewPipe.init(DownloaderTestImpl.getInstance());
2018-03-04 21:26:13 +01:00
extractor = (SoundcloudPlaylistExtractor) SoundCloud
.getPlaylistExtractor("https://soundcloud.com/liluzivert/sets/the-perfect-luv-tape-r?test=123");
extractor.fetchPage();
}
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
/*//////////////////////////////////////////////////////////////////////////
// Extractor
//////////////////////////////////////////////////////////////////////////*/
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
@Test
public void testServiceId() {
assertEquals(SoundCloud.getServiceId(), extractor.getServiceId());
}
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
@Test
public void testName() {
assertEquals("THE PERFECT LUV TAPE®", extractor.getName());
}
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
@Test
public void testId() {
assertEquals("246349810", extractor.getId());
}
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
@Test
public void testUrl() throws Exception {
assertEquals("https://soundcloud.com/liluzivert/sets/the-perfect-luv-tape-r", extractor.getUrl());
2018-03-04 21:26:13 +01:00
}
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
@Test
public void testOriginalUrl() throws Exception {
2018-03-04 21:26:13 +01:00
assertEquals("https://soundcloud.com/liluzivert/sets/the-perfect-luv-tape-r?test=123", extractor.getOriginalUrl());
}
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
/*//////////////////////////////////////////////////////////////////////////
// ListExtractor
//////////////////////////////////////////////////////////////////////////*/
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
@Test
public void testRelatedItems() throws Exception {
defaultTestRelatedItems(extractor);
2018-03-04 21:26:13 +01:00
}
@Test
public void testMoreRelatedItems() throws Exception {
defaultTestMoreItems(extractor);
2018-03-04 21:26:13 +01:00
}
/*//////////////////////////////////////////////////////////////////////////
// PlaylistExtractor
//////////////////////////////////////////////////////////////////////////*/
2017-08-08 08:42:28 +02:00
2018-03-04 21:26:13 +01:00
@Test
public void testThumbnailUrl() {
assertIsSecureUrl(extractor.getThumbnailUrl());
}
@Test
public void testBannerUrl() {
// SoundCloud playlists do not have a banner
assertNull(extractor.getBannerUrl());
2018-03-04 21:26:13 +01:00
}
@Test
public void testUploaderUrl() {
final String uploaderUrl = extractor.getUploaderUrl();
assertIsSecureUrl(uploaderUrl);
assertThat(uploaderUrl, containsString("liluzivert"));
2018-03-04 21:26:13 +01:00
}
@Test
public void testUploaderName() {
assertTrue(extractor.getUploaderName().contains("Lil Uzi Vert"));
2018-03-04 21:26:13 +01:00
}
@Test
public void testUploaderAvatarUrl() {
assertIsSecureUrl(extractor.getUploaderAvatarUrl());
}
@Test
public void testStreamCount() {
assertTrue("Stream count does not fit: " + extractor.getStreamCount(), extractor.getStreamCount() >= 10);
2018-03-04 21:26:13 +01:00
}
@Override
public void testUploaderVerified() throws Exception {
assertTrue(extractor.isUploaderVerified());
}
2017-08-08 08:42:28 +02:00
}
2019-08-12 17:15:21 +02:00
public static class RandomHouseMusic implements BasePlaylistExtractorTest {
2018-03-04 21:26:13 +01:00
private static SoundcloudPlaylistExtractor extractor;
@BeforeClass
public static void setUp() throws Exception {
NewPipe.init(DownloaderTestImpl.getInstance());
2018-03-04 21:26:13 +01:00
extractor = (SoundcloudPlaylistExtractor) SoundCloud
2019-08-12 17:15:21 +02:00
.getPlaylistExtractor("https://soundcloud.com/micky96/sets/house");
2018-03-04 21:26:13 +01:00
extractor.fetchPage();
}
/*//////////////////////////////////////////////////////////////////////////
// Extractor
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testServiceId() {
assertEquals(SoundCloud.getServiceId(), extractor.getServiceId());
}
@Test
public void testName() {
2019-08-12 17:15:21 +02:00
assertEquals("House", extractor.getName());
2018-03-04 21:26:13 +01:00
}
@Test
public void testId() {
2019-08-12 17:15:21 +02:00
assertEquals("123062856", extractor.getId());
2018-03-04 21:26:13 +01:00
}
@Test
public void testUrl() throws Exception {
2019-08-12 17:15:21 +02:00
assertEquals("https://soundcloud.com/micky96/sets/house", extractor.getUrl());
2018-03-04 21:26:13 +01:00
}
@Test
public void testOriginalUrl() throws Exception {
2019-08-12 17:15:21 +02:00
assertEquals("https://soundcloud.com/micky96/sets/house", extractor.getOriginalUrl());
2018-03-04 21:26:13 +01:00
}
/*//////////////////////////////////////////////////////////////////////////
// ListExtractor
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testRelatedItems() throws Exception {
defaultTestRelatedItems(extractor);
2018-03-04 21:26:13 +01:00
}
@Test
public void testMoreRelatedItems() throws Exception {
defaultTestMoreItems(extractor);
2018-03-04 21:26:13 +01:00
}
/*//////////////////////////////////////////////////////////////////////////
// PlaylistExtractor
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testThumbnailUrl() {
assertIsSecureUrl(extractor.getThumbnailUrl());
}
@Test
public void testBannerUrl() {
// SoundCloud playlists do not have a banner
assertNull(extractor.getBannerUrl());
2018-03-04 21:26:13 +01:00
}
@Test
public void testUploaderUrl() {
final String uploaderUrl = extractor.getUploaderUrl();
assertIsSecureUrl(uploaderUrl);
assertThat(uploaderUrl, containsString("micky96"));
2018-03-04 21:26:13 +01:00
}
@Test
public void testUploaderName() {
2019-08-12 17:15:21 +02:00
assertEquals("_mickyyy", extractor.getUploaderName());
2018-03-04 21:26:13 +01:00
}
@Test
public void testUploaderAvatarUrl() {
assertIsSecureUrl(extractor.getUploaderAvatarUrl());
}
@Test
public void testStreamCount() {
assertTrue("Stream count does not fit: " + extractor.getStreamCount(), extractor.getStreamCount() >= 10);
2018-03-04 21:26:13 +01:00
}
@Override
public void testUploaderVerified() throws Exception {
assertFalse(extractor.isUploaderVerified());
}
2017-08-08 08:42:28 +02:00
}
2018-03-04 21:26:13 +01:00
public static class EDMxxx implements BasePlaylistExtractorTest {
private static SoundcloudPlaylistExtractor extractor;
@BeforeClass
public static void setUp() throws Exception {
NewPipe.init(DownloaderTestImpl.getInstance());
2018-03-04 21:26:13 +01:00
extractor = (SoundcloudPlaylistExtractor) SoundCloud
.getPlaylistExtractor("https://soundcloud.com/user350509423/sets/edm-xxx");
extractor.fetchPage();
}
/*//////////////////////////////////////////////////////////////////////////
// Additional Testing
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testGetPageInNewExtractor() throws Exception {
PlaylistExtractor newExtractor = SoundCloud.getPlaylistExtractor(extractor.getUrl());
defaultTestGetPageInNewExtractor(extractor, newExtractor);
2018-03-04 21:26:13 +01:00
}
/*//////////////////////////////////////////////////////////////////////////
// Extractor
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testServiceId() {
assertEquals(SoundCloud.getServiceId(), extractor.getServiceId());
}
@Test
public void testName() {
assertEquals("EDM xXx", extractor.getName());
}
@Test
public void testId() {
assertEquals("136000376", extractor.getId());
}
@Test
public void testUrl() throws Exception {
assertEquals("https://soundcloud.com/user350509423/sets/edm-xxx", extractor.getUrl());
2018-03-04 21:26:13 +01:00
}
@Test
public void testOriginalUrl() throws Exception {
2018-03-04 21:26:13 +01:00
assertEquals("https://soundcloud.com/user350509423/sets/edm-xxx", extractor.getOriginalUrl());
}
/*//////////////////////////////////////////////////////////////////////////
// ListExtractor
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testRelatedItems() throws Exception {
defaultTestRelatedItems(extractor);
2018-03-04 21:26:13 +01:00
}
@Test
public void testMoreRelatedItems() throws Exception {
ListExtractor.InfoItemsPage<StreamInfoItem> currentPage = defaultTestMoreItems(extractor);
2018-03-04 21:26:13 +01:00
// Test for 2 more levels
for (int i = 0; i < 2; i++) {
2020-04-15 14:09:46 +02:00
currentPage = extractor.getPage(currentPage.getNextPage());
defaultTestListOfItems(SoundCloud, currentPage.getItems(), currentPage.getErrors());
2018-03-04 21:26:13 +01:00
}
}
/*//////////////////////////////////////////////////////////////////////////
// PlaylistExtractor
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testThumbnailUrl() {
assertIsSecureUrl(extractor.getThumbnailUrl());
}
@Test
public void testBannerUrl() {
// SoundCloud playlists do not have a banner
assertNull(extractor.getBannerUrl());
2018-03-04 21:26:13 +01:00
}
@Test
public void testUploaderUrl() {
final String uploaderUrl = extractor.getUploaderUrl();
assertIsSecureUrl(uploaderUrl);
assertTrue(uploaderUrl, uploaderUrl.contains("user350509423"));
}
@Test
public void testUploaderName() {
assertEquals("user350509423", extractor.getUploaderName());
}
2018-03-04 21:26:13 +01:00
@Test
public void testUploaderAvatarUrl() {
assertIsSecureUrl(extractor.getUploaderAvatarUrl());
}
2018-03-04 21:26:13 +01:00
@Test
public void testStreamCount() {
assertTrue("Stream count does not fit: " + extractor.getStreamCount(), extractor.getStreamCount() >= 370);
2018-03-04 21:26:13 +01:00
}
@Override
public void testUploaderVerified() throws Exception {
assertFalse(extractor.isUploaderVerified());
}
}
public static class SmallPlaylist implements BasePlaylistExtractorTest {
private static SoundcloudPlaylistExtractor extractor;
@BeforeClass
public static void setUp() throws Exception {
NewPipe.init(DownloaderTestImpl.getInstance());
extractor = (SoundcloudPlaylistExtractor) SoundCloud
.getPlaylistExtractor("https://soundcloud.com/breezy-123/sets/empty-playlist?test=123");
extractor.fetchPage();
}
/*//////////////////////////////////////////////////////////////////////////
// Extractor
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testServiceId() {
assertEquals(SoundCloud.getServiceId(), extractor.getServiceId());
}
@Test
public void testName() {
assertEquals("EMPTY PLAYLIST", extractor.getName());
}
@Test
public void testId() {
assertEquals("23483459", extractor.getId());
}
@Test
public void testUrl() throws Exception {
assertEquals("https://soundcloud.com/breezy-123/sets/empty-playlist", extractor.getUrl());
}
@Test
public void testOriginalUrl() throws Exception {
assertEquals("https://soundcloud.com/breezy-123/sets/empty-playlist?test=123", extractor.getOriginalUrl());
}
/*//////////////////////////////////////////////////////////////////////////
// ListExtractor
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testRelatedItems() throws Exception {
defaultTestRelatedItems(extractor);
}
@Test
2021-01-15 20:11:40 +01:00
@Ignore("TODO fix")
public void testMoreRelatedItems() throws Exception {
try {
defaultTestMoreItems(extractor);
} catch (Throwable ignored) {
return;
}
fail("This playlist doesn't have more items, it should throw an error");
}
/*//////////////////////////////////////////////////////////////////////////
// PlaylistExtractor
//////////////////////////////////////////////////////////////////////////*/
@Test
public void testThumbnailUrl() {
assertIsSecureUrl(extractor.getThumbnailUrl());
}
@Test
public void testBannerUrl() {
// SoundCloud playlists do not have a banner
assertNull(extractor.getBannerUrl());
}
@Test
public void testUploaderUrl() {
final String uploaderUrl = extractor.getUploaderUrl();
assertIsSecureUrl(uploaderUrl);
assertThat(uploaderUrl, containsString("breezy-123"));
}
@Test
public void testUploaderName() {
assertEquals("breezy-123", extractor.getUploaderName());
}
@Test
public void testUploaderAvatarUrl() {
assertIsSecureUrl(extractor.getUploaderAvatarUrl());
}
@Test
public void testStreamCount() {
assertEquals(2, extractor.getStreamCount());
}
@Override
public void testUploaderVerified() throws Exception {
assertFalse(extractor.isUploaderVerified());
}
}
2017-08-08 08:42:28 +02:00
}