2019-12-22 17:30:22 +01:00
package org.schabi.newpipe.extractor.services.bandcamp ;
import org.junit.BeforeClass ;
import org.junit.Test ;
2021-01-15 21:55:40 +01:00
import org.schabi.newpipe.downloader.DownloaderTestImpl ;
2019-12-22 17:30:22 +01:00
import org.schabi.newpipe.extractor.NewPipe ;
2020-12-18 23:15:54 +01:00
import org.schabi.newpipe.extractor.StreamingService ;
2020-08-09 10:07:49 +02:00
import org.schabi.newpipe.extractor.exceptions.ContentNotSupportedException ;
2019-12-22 17:30:22 +01:00
import org.schabi.newpipe.extractor.exceptions.ExtractionException ;
2020-06-04 12:30:53 +02:00
import org.schabi.newpipe.extractor.exceptions.ParsingException ;
2020-12-18 23:15:54 +01:00
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest ;
2019-12-22 17:30:22 +01:00
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampRadioStreamExtractor ;
2020-06-04 12:30:53 +02:00
import org.schabi.newpipe.extractor.stream.StreamExtractor ;
2020-12-18 23:15:54 +01:00
import org.schabi.newpipe.extractor.stream.StreamType ;
2019-12-22 17:30:22 +01:00
import java.io.IOException ;
2020-12-19 10:40:21 +01:00
import java.util.Calendar ;
import java.util.Collections ;
import java.util.List ;
import java.util.TimeZone ;
2019-12-22 17:30:22 +01:00
import static org.junit.Assert.* ;
2020-04-20 21:55:35 +02:00
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp ;
2019-12-22 17:30:22 +01:00
2020-12-18 23:15:54 +01:00
public class BandcampRadioStreamExtractorTest extends DefaultStreamExtractorTest {
2019-12-22 17:30:22 +01:00
2020-12-18 23:15:54 +01:00
private static StreamExtractor extractor ;
2020-06-04 12:30:53 +02:00
2020-12-18 23:15:54 +01:00
private static final String URL = " https://bandcamp.com/?show=230 " ;
2020-06-04 12:30:53 +02:00
2019-12-22 17:30:22 +01:00
@BeforeClass
2020-06-04 12:30:53 +02:00
public static void setUp ( ) throws IOException , ExtractionException {
2019-12-22 17:30:22 +01:00
NewPipe . init ( DownloaderTestImpl . getInstance ( ) ) ;
2020-12-18 23:15:54 +01:00
extractor = Bandcamp . getStreamExtractor ( URL ) ;
extractor . fetchPage ( ) ;
2019-12-22 17:30:22 +01:00
}
@Test
public void testGettingCorrectStreamExtractor ( ) throws ExtractionException {
2020-04-20 21:55:35 +02:00
assertTrue ( Bandcamp . getStreamExtractor ( " https://bandcamp.com/?show=3 " ) instanceof BandcampRadioStreamExtractor ) ;
2020-11-24 09:55:41 +01:00
assertFalse ( Bandcamp . getStreamExtractor ( " https://zachbenson.bandcamp.com/track/deflated " )
instanceof BandcampRadioStreamExtractor ) ;
2019-12-22 17:30:22 +01:00
}
2020-12-18 23:15:54 +01:00
@Override public StreamExtractor extractor ( ) { return extractor ; }
@Override public String expectedName ( ) throws Exception { return " Sound Movements " ; }
@Override public String expectedId ( ) throws Exception { return " 230 " ; }
@Override public String expectedUrlContains ( ) throws Exception { return URL ; }
@Override public String expectedOriginalUrlContains ( ) throws Exception { return URL ; }
@Override public boolean expectedHasVideoStreams ( ) { return false ; }
@Override public boolean expectedHasSubtitles ( ) { return false ; }
@Override public boolean expectedHasFrames ( ) { return false ; }
2021-03-31 20:21:49 +02:00
@Override public boolean expectedHasRelatedItems ( ) { return false ; }
2020-12-18 23:15:54 +01:00
@Override public StreamType expectedStreamType ( ) { return StreamType . AUDIO_STREAM ; }
@Override public StreamingService expectedService ( ) { return Bandcamp ; }
@Override public String expectedUploaderName ( ) { return " Andrew Jervis " ; }
2020-06-04 12:30:53 +02:00
2020-08-09 10:07:49 +02:00
@Test ( expected = ContentNotSupportedException . class )
2020-06-04 19:32:19 +02:00
public void testGetUploaderUrl ( ) throws ParsingException {
2020-12-18 23:15:54 +01:00
extractor . getUploaderUrl ( ) ;
2020-06-04 12:30:53 +02:00
}
2020-12-18 23:15:54 +01:00
@Test ( expected = ContentNotSupportedException . class )
@Override
public void testUploaderUrl ( ) throws Exception {
super . testUploaderUrl ( ) ;
2020-06-04 12:30:53 +02:00
}
2020-12-18 23:15:54 +01:00
@Override public String expectedUploaderUrl ( ) { return null ; }
2020-06-04 12:30:53 +02:00
2020-12-18 23:15:54 +01:00
@Override
public List < String > expectedDescriptionContains ( ) {
return Collections . singletonList ( " Featuring special guests Nick Hakim and Elbows, plus fresh cuts from Eddie Palmieri, KRS One, Ladi6, and Moonchild. " ) ;
2019-12-22 17:30:22 +01:00
}
2020-06-04 12:30:53 +02:00
2020-12-18 23:15:54 +01:00
@Override public long expectedLength ( ) { return 5619 ; }
@Override public long expectedViewCountAtLeast ( ) { return - 1 ; }
@Override public long expectedLikeCountAtLeast ( ) { return - 1 ; }
@Override public long expectedDislikeCountAtLeast ( ) { return - 1 ; }
2020-06-04 12:30:53 +02:00
2020-12-18 23:15:54 +01:00
@Override public String expectedUploadDate ( ) { return " 16 May 2017 00:00:00 GMT " ; }
@Override public String expectedTextualUploadDate ( ) { return " 16 May 2017 00:00:00 GMT " ; }
2020-06-04 14:09:21 +02:00
@Test
public void testUploadDate ( ) throws ParsingException {
2020-06-04 19:12:10 +02:00
final Calendar expectedCalendar = Calendar . getInstance ( ) ;
// 16 May 2017 00:00:00 GMT
expectedCalendar . setTimeZone ( TimeZone . getTimeZone ( " GMT " ) ) ;
expectedCalendar . setTimeInMillis ( 0 ) ;
expectedCalendar . set ( 2017 , Calendar . MAY , 16 ) ;
2020-12-18 23:15:54 +01:00
assertEquals ( expectedCalendar . getTimeInMillis ( ) , extractor . getUploadDate ( ) . offsetDateTime ( ) . toInstant ( ) . toEpochMilli ( ) ) ;
2020-06-04 12:30:53 +02:00
}
@Test
public void testGetThumbnailUrl ( ) throws ParsingException {
2020-12-18 23:15:54 +01:00
assertTrue ( extractor . getThumbnailUrl ( ) . contains ( " bcbits.com/img " ) ) ;
2020-06-04 12:30:53 +02:00
}
@Test
public void testGetUploaderAvatarUrl ( ) throws ParsingException {
2020-12-18 23:15:54 +01:00
assertTrue ( extractor . getUploaderAvatarUrl ( ) . contains ( " bandcamp-button " ) ) ;
2020-06-04 12:30:53 +02:00
}
2020-12-18 23:15:54 +01:00
@Test public void testGetAudioStreams ( ) throws ExtractionException , IOException {
assertEquals ( 2 , extractor . getAudioStreams ( ) . size ( ) ) ;
2020-06-04 12:30:53 +02:00
}
2019-12-22 17:30:22 +01:00
}