From f6d054e5da3a58e2e4b6f9ee8d8d78dbdb91c1cc Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Wed, 4 Aug 2021 21:03:00 +0530 Subject: [PATCH] Add test for comments. --- .../YoutubeCommentsInfoItemExtractor.java | 8 +++++- .../youtube/YoutubeCommentsExtractorTest.java | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsInfoItemExtractor.java index e6f8601d..e7cc0236 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsInfoItemExtractor.java @@ -33,7 +33,13 @@ public class YoutubeCommentsInfoItemExtractor implements CommentsInfoItemExtract } private JsonObject getCommentRenderer() throws ParsingException { - return commentRenderer != null ? commentRenderer : (commentRenderer = JsonUtils.getObject(json, "comment.commentRenderer")); + if(commentRenderer == null) { + if(!json.has("comment")) + commentRenderer = json; + else + commentRenderer = JsonUtils.getObject(json, "comment.commentRenderer"); + } + return commentRenderer; } @Override diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeCommentsExtractorTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeCommentsExtractorTest.java index 22819c7f..ba2f0a49 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeCommentsExtractorTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeCommentsExtractorTest.java @@ -306,4 +306,32 @@ public class YoutubeCommentsExtractorTest { assertTrue("The first pinned comment has no vote count", !Utils.isBlank(pinnedComment.getTextualLikeCount())); } } + + public static class RepliesTest { + private final static String url = "https://www.youtube.com/watch?v=--yeOvJGZQk"; + private static YoutubeCommentsExtractor extractor; + + @BeforeClass + public static void setUp() throws Exception { + YoutubeParsingHelper.resetClientVersionAndKey(); + YoutubeParsingHelper.setNumberGenerator(new Random(1)); + NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "likes")); + extractor = (YoutubeCommentsExtractor) YouTube + .getCommentsExtractor(url); + extractor.fetchPage(); + } + + @Test + public void testGetCommentsFirstReplies() throws IOException, ExtractionException { + final InfoItemsPage comments = extractor.getInitialPage(); + + DefaultTests.defaultTestListOfItems(YouTube, comments.getItems(), comments.getErrors()); + + CommentsInfoItem pinnedComment = comments.getItems().get(0); + + InfoItemsPage replies = extractor.getPage(pinnedComment.getReplies()); + + assertEquals("First reply comment did not match", "Lol", replies.getItems().get(0).getCommentText()); + } + } }