NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampStreamExtractorTest...

168 lines
4.6 KiB
Java
Raw Normal View History

// Created by Fynn Godau 2019, licensed GNU GPL version 3 or later
package org.schabi.newpipe.extractor.services.bandcamp;
2021-12-27 21:08:08 +01:00
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
2021-01-15 21:55:40 +01:00
import org.schabi.newpipe.downloader.DownloaderTestImpl;
import org.schabi.newpipe.extractor.NewPipe;
2020-11-19 22:33:52 +01:00
import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.exceptions.ParsingException;
2020-11-19 22:33:52 +01:00
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper;
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampStreamExtractor;
import org.schabi.newpipe.extractor.stream.StreamExtractor;
2020-11-19 22:33:52 +01:00
import org.schabi.newpipe.extractor.stream.StreamType;
import java.io.IOException;
2020-11-19 22:33:52 +01:00
import java.util.Collections;
import java.util.List;
2021-12-27 21:08:08 +01:00
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
2020-04-20 21:55:35 +02:00
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
2020-11-19 22:33:52 +01:00
/**
* Tests for {@link BandcampStreamExtractor}
*/
public class BandcampStreamExtractorTest extends DefaultStreamExtractorTest {
private static BandcampStreamExtractor extractor;
2021-12-27 21:08:08 +01:00
@BeforeAll
2020-11-19 22:33:52 +01:00
public static void setUp() throws ExtractionException, IOException {
NewPipe.init(DownloaderTestImpl.getInstance());
2020-11-19 22:33:52 +01:00
2020-04-20 21:55:35 +02:00
extractor = (BandcampStreamExtractor) Bandcamp
2020-11-27 16:48:06 +01:00
.getStreamExtractor("https://teaganbear.bandcamp.com/track/just-for-the-halibut-creative-commons-attribution");
extractor.fetchPage();
}
2020-11-19 22:33:52 +01:00
@Override
public StreamExtractor extractor() {
return extractor;
}
2020-11-19 22:33:52 +01:00
@Override
public StreamingService expectedService() {
return Bandcamp;
}
2020-11-19 22:33:52 +01:00
@Override
public String expectedName() {
2020-11-27 16:48:06 +01:00
return "Just for the Halibut [Creative Commons: Attribution]";
}
2020-11-19 22:33:52 +01:00
@Override
public String expectedId() {
2020-11-27 16:48:06 +01:00
return "https://teaganbear.bandcamp.com/track/just-for-the-halibut-creative-commons-attribution";
}
2020-11-19 22:33:52 +01:00
@Override
public String expectedUrlContains() {
2020-11-27 16:48:06 +01:00
return "https://teaganbear.bandcamp.com/track/just-for-the-halibut-creative-commons-attribution";
}
2020-11-19 22:33:52 +01:00
@Override
public String expectedOriginalUrlContains() {
2020-11-27 16:48:06 +01:00
return "https://teaganbear.bandcamp.com/track/just-for-the-halibut-creative-commons-attribution";
}
2020-11-19 22:33:52 +01:00
@Override
public StreamType expectedStreamType() {
return StreamType.AUDIO_STREAM;
}
2020-06-04 19:12:10 +02:00
2020-11-19 22:33:52 +01:00
@Override
public String expectedUploaderName() {
2020-11-27 16:48:06 +01:00
return "Teaganbear";
2020-06-04 13:03:16 +02:00
}
2020-11-19 22:33:52 +01:00
@Override
public String expectedUploaderUrl() {
2020-11-27 16:48:06 +01:00
return "https://teaganbear.bandcamp.com/";
}
2020-11-19 22:33:52 +01:00
@Override
public List<String> expectedDescriptionContains() {
2020-11-27 16:48:06 +01:00
return Collections.singletonList("it's Creative Commons so feel free to use it in whatever");
2019-12-21 21:47:06 +01:00
}
2020-11-19 22:33:52 +01:00
@Override
public long expectedLength() {
return 0;
}
@Override
public long expectedViewCountAtLeast() {
return Long.MIN_VALUE;
}
@Override
public String expectedUploadDate() {
2020-11-27 16:48:06 +01:00
return "2019-03-10 23:00:42.000";
2020-11-19 22:33:52 +01:00
}
@Override
public String expectedTextualUploadDate() {
2020-11-27 16:48:06 +01:00
return "10 Mar 2019 23:00:42 GMT";
2020-11-19 22:33:52 +01:00
}
@Override
public long expectedLikeCountAtLeast() {
return Long.MIN_VALUE;
}
@Override
public long expectedDislikeCountAtLeast() {
return Long.MIN_VALUE;
}
@Override
public boolean expectedHasVideoStreams() {
return false;
}
@Override
public boolean expectedHasRelatedItems() {
2021-04-13 17:55:19 +02:00
return true;
2020-11-19 22:33:52 +01:00
}
@Override
public boolean expectedHasSubtitles() {
return false;
}
@Override
public boolean expectedHasFrames() {
return false;
}
@Override
public String expectedLicence() {
return "CC BY 3.0";
}
@Override
public String expectedCategory() {
2020-11-27 16:48:06 +01:00
return "dance";
}
@Test
2020-11-19 22:33:52 +01:00
public void testArtistProfilePicture() throws Exception {
final String url = extractor().getUploaderAvatarUrl();
2020-11-19 22:33:52 +01:00
assertTrue(url.contains("://f4.bcbits.com/img/") && url.endsWith(".jpg"));
}
@Test
public void testTranslateIdsToUrl() throws ParsingException {
2020-11-27 16:48:06 +01:00
// To add tests: look at website's source, search for `band_id` and `item_id`
assertEquals(
"https://teaganbear.bandcamp.com/track/just-for-the-halibut-creative-commons-attribution",
BandcampExtractorHelper.getStreamUrlFromIds(3877364987L, 3486455278L, "track")
);
}
}