136 lines
6.5 KiB
Java
136 lines
6.5 KiB
Java
package org.schabi.newpipe.extractor.services.soundcloud.search;
|
|
|
|
import org.junit.BeforeClass;
|
|
import org.junit.Test;
|
|
import org.schabi.newpipe.DownloaderTestImpl;
|
|
import org.schabi.newpipe.extractor.InfoItem;
|
|
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
|
import org.schabi.newpipe.extractor.NewPipe;
|
|
import org.schabi.newpipe.extractor.StreamingService;
|
|
import org.schabi.newpipe.extractor.search.SearchExtractor;
|
|
import org.schabi.newpipe.extractor.services.DefaultSearchExtractorTest;
|
|
|
|
import javax.annotation.Nullable;
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.net.URLEncoder;
|
|
|
|
import static java.util.Collections.singletonList;
|
|
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
|
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoDuplicatedItems;
|
|
import static org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudSearchQueryHandlerFactory.*;
|
|
|
|
public class SoundcloudSearchExtractorTest {
|
|
|
|
public static class All extends DefaultSearchExtractorTest {
|
|
private static SearchExtractor extractor;
|
|
private static final String QUERY = "lill uzi vert";
|
|
|
|
@BeforeClass
|
|
public static void setUp() throws Exception {
|
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
|
extractor = SoundCloud.getSearchExtractor(QUERY);
|
|
extractor.fetchPage();
|
|
}
|
|
|
|
@Override public SearchExtractor extractor() { return extractor; }
|
|
@Override public StreamingService expectedService() { return SoundCloud; }
|
|
@Override public String expectedName() { return QUERY; }
|
|
@Override public String expectedId() { return QUERY; }
|
|
@Override public String expectedUrlContains() { return "soundcloud.com/search?q=" + urlEncode(QUERY); }
|
|
@Override public String expectedOriginalUrlContains() { return "soundcloud.com/search?q=" + urlEncode(QUERY); }
|
|
@Override public String expectedSearchString() { return QUERY; }
|
|
@Nullable @Override public String expectedSearchSuggestion() { return null; }
|
|
}
|
|
|
|
public static class Tracks extends DefaultSearchExtractorTest {
|
|
private static SearchExtractor extractor;
|
|
private static final String QUERY = "lill uzi vert";
|
|
|
|
@BeforeClass
|
|
public static void setUp() throws Exception {
|
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
|
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(TRACKS), "");
|
|
extractor.fetchPage();
|
|
}
|
|
|
|
@Override public SearchExtractor extractor() { return extractor; }
|
|
@Override public StreamingService expectedService() { return SoundCloud; }
|
|
@Override public String expectedName() { return QUERY; }
|
|
@Override public String expectedId() { return QUERY; }
|
|
@Override public String expectedUrlContains() { return "soundcloud.com/search/tracks?q=" + urlEncode(QUERY); }
|
|
@Override public String expectedOriginalUrlContains() { return "soundcloud.com/search/tracks?q=" + urlEncode(QUERY); }
|
|
@Override public String expectedSearchString() { return QUERY; }
|
|
@Nullable @Override public String expectedSearchSuggestion() { return null; }
|
|
|
|
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.STREAM; }
|
|
}
|
|
|
|
public static class Users extends DefaultSearchExtractorTest {
|
|
private static SearchExtractor extractor;
|
|
private static final String QUERY = "lill uzi vert";
|
|
|
|
@BeforeClass
|
|
public static void setUp() throws Exception {
|
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
|
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(USERS), "");
|
|
extractor.fetchPage();
|
|
}
|
|
|
|
@Override public SearchExtractor extractor() { return extractor; }
|
|
@Override public StreamingService expectedService() { return SoundCloud; }
|
|
@Override public String expectedName() { return QUERY; }
|
|
@Override public String expectedId() { return QUERY; }
|
|
@Override public String expectedUrlContains() { return "soundcloud.com/search/users?q=" + urlEncode(QUERY); }
|
|
@Override public String expectedOriginalUrlContains() { return "soundcloud.com/search/users?q=" + urlEncode(QUERY); }
|
|
@Override public String expectedSearchString() { return QUERY; }
|
|
@Nullable @Override public String expectedSearchSuggestion() { return null; }
|
|
|
|
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.CHANNEL; }
|
|
}
|
|
|
|
public static class Playlists extends DefaultSearchExtractorTest {
|
|
private static SearchExtractor extractor;
|
|
private static final String QUERY = "lill uzi vert";
|
|
|
|
@BeforeClass
|
|
public static void setUp() throws Exception {
|
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
|
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(PLAYLISTS), "");
|
|
extractor.fetchPage();
|
|
}
|
|
|
|
@Override public SearchExtractor extractor() { return extractor; }
|
|
@Override public StreamingService expectedService() { return SoundCloud; }
|
|
@Override public String expectedName() { return QUERY; }
|
|
@Override public String expectedId() { return QUERY; }
|
|
@Override public String expectedUrlContains() { return "soundcloud.com/search/playlists?q=" + urlEncode(QUERY); }
|
|
@Override public String expectedOriginalUrlContains() { return "soundcloud.com/search/playlists?q=" + urlEncode(QUERY); }
|
|
@Override public String expectedSearchString() { return QUERY; }
|
|
@Nullable @Override public String expectedSearchSuggestion() { return null; }
|
|
|
|
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.PLAYLIST; }
|
|
}
|
|
|
|
public static class PagingTest {
|
|
@Test
|
|
public void duplicatedItemsCheck() throws Exception {
|
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
|
final SearchExtractor extractor = SoundCloud.getSearchExtractor("cirque du soleil", singletonList(TRACKS), "");
|
|
extractor.fetchPage();
|
|
|
|
final InfoItemsPage<InfoItem> page1 = extractor.getInitialPage();
|
|
final InfoItemsPage<InfoItem> page2 = extractor.getPage(page1.getNextPage());
|
|
|
|
assertNoDuplicatedItems(SoundCloud, page1, page2);
|
|
}
|
|
}
|
|
|
|
private static String urlEncode(String value) {
|
|
try {
|
|
return URLEncoder.encode(value, CHARSET_UTF_8);
|
|
} catch (UnsupportedEncodingException e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
}
|