From a701a43db3602fc8685f75f3695440e71b096e52 Mon Sep 17 00:00:00 2001 From: gaurav Date: Wed, 9 Jul 2025 13:52:03 -0700 Subject: [PATCH] Fix playlist item pagination and add test --- R/get_playlist_items.R | 9 ++++----- tests/testthat/test-get-playlist-items.R | 10 ++++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 tests/testthat/test-get-playlist-items.R diff --git a/R/get_playlist_items.R b/R/get_playlist_items.R index 4fd386c..3212e79 100644 --- a/R/get_playlist_items.R +++ b/R/get_playlist_items.R @@ -65,20 +65,19 @@ get_playlist_items <- function(filter = NULL, part = "contentDetails", res <- tuber_GET(path = "playlistItems", query = querylist, ...) - items <- res$items next_token <- res$nextPageToken - while (length(items) < max_results && is.character(next_token)) { + while (length(res$items) < max_results && is.character(next_token)) { querylist$pageToken <- next_token - querylist$maxResults <- min(50, max_results - length(items)) + querylist$maxResults <- min(50, max_results - length(res$items)) a_res <- tuber_GET(path = "playlistItems", query = querylist, ...) - items <- c(items, a_res$items) + res$items <- c(res$items, a_res$items) next_token <- a_res$nextPageToken } - res$items <- items + res$nextPageToken <- next_token if (simplify) { allResultsList <- unlist(res[which(names(res) == "items")], recursive = FALSE) diff --git a/tests/testthat/test-get-playlist-items.R b/tests/testthat/test-get-playlist-items.R new file mode 100644 index 0000000..0398039 --- /dev/null +++ b/tests/testthat/test-get-playlist-items.R @@ -0,0 +1,10 @@ +context("Get Playlist Items") + +test_that("get_playlist_items returns >50 results when requested", { + skip_on_cran() + google_token <- readRDS("token_file.rds.enc")$google_token + options(google_token = google_token) + + res <- get_playlist_items(filter = c(playlist_id = "PLrEnWoR732-CN09YykVof2lxdI3MLOZda"), max_results = 55) + expect_true(length(res$items) >= 55) +})