Nothing
#' Test Helpers for tubern
#'
#' Helper functions and utilities for testing
#' Skip test if no OAuth token is available
#'
#' Use this for integration tests that require real API access.
#' Tests using this will be skipped on CRAN and CI without tokens.
#'
#' @return Invisibly returns NULL; skips the test if no token is available
#' @keywords internal
skip_if_no_token <- function() {
token <- getOption("google_token")
if (is.null(token)) {
testthat::skip("No OAuth token available. Run yt_oauth() to test with real API.")
}
}
#' Create a mock API response for testing
#'
#' @param rows List of rows (each row is a vector of values)
#' @param column_headers List of column header definitions
#' @param query Optional query metadata
#' @return A list mimicking a YouTube Analytics API response
#' @keywords internal
mock_api_response <- function(rows = NULL,
column_headers = NULL,
query = list()) {
if (is.null(column_headers)) {
column_headers <- list(
list(name = "day", dataType = "STRING"),
list(name = "views", dataType = "INTEGER")
)
}
if (is.null(rows)) {
rows <- list(
c("2023-01-01", "100"),
c("2023-01-02", "200")
)
}
list(
kind = "youtubeAnalytics#resultTable",
columnHeaders = column_headers,
rows = rows,
query = query
)
}
#' Create a stub for API request that returns a mock response
#'
#' @param response The mock response to return
#' @return A function that can replace .api_request for testing
#' @keywords internal
create_api_stub <- function(response) {
function(method, path, query = NULL, body = NULL, ...) {
response
}
}
#' Temporarily replace .api_request with a stub for testing
#'
#' @param stub_fn The stub function to use
#' @param code The code to execute with the stub in place
#' @return The result of evaluating the code
#' @keywords internal
with_api_stub <- function(stub_fn, code) {
orig <- getFromNamespace(".api_request", ns = "tubern")
on.exit(assignInNamespace(".api_request", orig, ns = "tubern"))
assignInNamespace(".api_request", stub_fn, ns = "tubern")
force(code)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.