Skip to content

Commit e66fed4

Browse files
committed
[YouTube] Add a StreamExtractor test for a video without visual metadata
The video "Makani’s first commercial-scale energy kite" (video ID: An8vtD1FDqs), which has this behavior, is used for the new test, NoVisualMetadataVideoTest, added in YoutubeStreamExtractorDefaultTest. Tests of elements who throw an exception in this case (subscriber count, like count, uploader avatar URL) test if the ParsingException exception is thrown by YoutubeStreamExtractor.
1 parent aa9a8ca commit e66fed4

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/stream/YoutubeStreamExtractorDefaultTest.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,69 @@ public static void setUp() throws Exception {
428428
// @formatter:on
429429
}
430430

431+
public static class NoVisualMetadataVideoTest extends DefaultStreamExtractorTest {
432+
// Video without visual metadata on YouTube clients (video title, upload date, channel name,
433+
// comments, ...)
434+
private static final String ID = "An8vtD1FDqs";
435+
private static final String URL = BASE_URL + ID;
436+
private static StreamExtractor extractor;
437+
438+
@BeforeAll
439+
public static void setUp() throws Exception {
440+
YoutubeTestsUtils.ensureStateless();
441+
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "noVisualMetadata"));
442+
extractor = YouTube.getStreamExtractor(URL);
443+
extractor.fetchPage();
444+
}
445+
446+
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
447+
@Override public String expectedUploaderName() { return "Makani"; }
448+
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UC-iMZJ8NppwT2fLwzFWJKOQ"; }
449+
@Override public List<String> expectedDescriptionContains() { return Arrays.asList("Makani", "prototype", "rotors"); }
450+
@Override public long expectedLength() { return 175; }
451+
@Override public long expectedViewCountAtLeast() { return 88_000; }
452+
@Nullable @Override public String expectedUploadDate() { return "2017-05-16 00:00:00.000"; }
453+
@Nullable @Override public String expectedTextualUploadDate() { return "2017-05-16"; }
454+
@Override public long expectedLikeCountAtLeast() { return -1; }
455+
@Override public long expectedDislikeCountAtLeast() { return -1; }
456+
@Override public StreamExtractor extractor() { return extractor; }
457+
@Override public StreamingService expectedService() { return YouTube; }
458+
@Override public String expectedName() { return "Makani’s first commercial-scale energy kite"; }
459+
@Override public String expectedId() { return "An8vtD1FDqs"; }
460+
@Override public String expectedUrlContains() { return BASE_URL + ID; }
461+
@Override public String expectedOriginalUrlContains() { return URL; }
462+
@Override public String expectedCategory() { return "Science & Technology"; }
463+
@Override public String expectedLicence() { return YOUTUBE_LICENCE; }
464+
@Override public List<String> expectedTags() {
465+
return Arrays.asList("Makani", "Moonshot", "Moonshot Factory", "Prototyping",
466+
"california", "california wind", "clean", "clean energy", "climate change",
467+
"climate crisis", "energy", "energy kite", "google", "google x", "green",
468+
"green energy", "kite", "kite power", "kite power solutions",
469+
"kite power systems", "makani power", "power", "renewable", "renewable energy",
470+
"renewable energy engineering", "renewable energy projects",
471+
"renewable energy sources", "renewables", "solutions", "tech", "technology",
472+
"turbine", "wind", "wind energy", "wind power", "wind turbine", "windmill");
473+
}
474+
475+
@Test
476+
@Override
477+
public void testSubscriberCount() {
478+
assertThrows(ParsingException.class, () -> extractor.getUploaderSubscriberCount());
479+
}
480+
481+
@Test
482+
@Override
483+
public void testLikeCount() {
484+
assertThrows(ParsingException.class, () -> extractor.getLikeCount());
485+
}
486+
487+
@Test
488+
@Override
489+
public void testUploaderAvatarUrl() {
490+
assertThrows(ParsingException.class, () -> extractor.getUploaderAvatarUrl());
491+
}
492+
}
493+
431494
public static class UnlistedTest {
432495
private static YoutubeStreamExtractor extractor;
433496

0 commit comments

Comments
 (0)