Nothing
test_that("can coerce simple strings and drive_id's to sheets_id", {
expect_s3_class(as_sheets_id("123"), "sheets_id")
expect_identical(as_sheets_id(as_sheets_id("123")), as_sheets_id("123"))
expect_identical(as_sheets_id(as_id("123")), as_sheets_id("123"))
})
test_that("string with invalid character is rejected", {
expect_snapshot(as_sheets_id("abc&123"), error = TRUE)
})
test_that("invalid inputs are caught", {
expect_error(as_sheets_id(NULL))
expect_error(as_sheets_id(1))
expect_snapshot(as_sheets_id(letters[1:2]), error = TRUE)
})
test_that("id can be dug out of a URL", {
expect_identical(
as_sheets_id("https://docs.google.com/spreadsheets/d/abc123/"),
as_sheets_id("abc123")
)
expect_identical(
as_sheets_id("https://docs.google.com/spreadsheets/d/abc123/edit#gid=123"),
as_sheets_id("abc123")
)
})
test_that("invalid URL is interpreted as filepath, results in NA", {
out <- as_sheets_id("https://www.r-project.org")
expect_equal(vec_data(NA), NA)
})
# how I created the reference dribble, which represents two files:
# * one Google Sheet
# * one non-Google Sheet
# dat <- googledrive::drive_examples_remote()
# dat <- dat[dat$name %in% c("chicken.txt", "chicken_sheet"), ]
# saveRDS(dat, file = test_path("ref/dribble.rds"), version = 2)
test_that("multi-row dribble is rejected", {
d <- readRDS(test_path("ref/dribble.rds"))
expect_snapshot(as_sheets_id(d), error = TRUE)
})
test_that("dribble with non-Sheet file is rejected", {
d <- readRDS(test_path("ref/dribble.rds"))
d <- googledrive::drive_reveal(d, what = "mime_type")
d <- d[d$mime_type == "text/plain", ]
expect_snapshot(as_sheets_id(d), error = TRUE)
})
test_that("dribble with one Sheet can be coerced", {
d <- readRDS(test_path("ref/dribble.rds"))
d <- googledrive::drive_reveal(d, what = "mime_type")
d <- d[d$mime_type == "application/vnd.google-apps.spreadsheet", ]
expect_s3_class(as_sheets_id(d), "sheets_id")
})
test_that("a googlesheets4_spreadsheet can be coerced", {
x <- new("Spreadsheet", spreadsheetId = "123")
out <- as_sheets_id(new_googlesheets4_spreadsheet(x))
expect_s3_class(out, "sheets_id")
expect_identical(out, as_sheets_id("123"))
})
test_that("as_id.googlesheets4_spreadsheet works", {
x <- new_googlesheets4_spreadsheet(list(spreadsheetId = "123"))
expect_identical(as_id(x), as_id("123"))
})
## sheets_id print method ----
test_that("sheets_id print method reveals metadata", {
skip_if_offline()
skip_if_no_token()
expect_snapshot(print(gs4_example("gapminder")))
})
test_that("sheets_id print method doesn't error for nonexistent ID", {
skip_if_offline()
skip_if_no_token()
expect_no_error(format(as_sheets_id("12345")))
expect_snapshot(as_sheets_id("12345"))
})
test_that("can print public sheets_id if deauth'd", {
skip_if_offline()
skip_on_cran()
local_deauth()
expect_snapshot(print(gs4_example("mini-gap")))
})
test_that("sheets_id print does not error for lack of cred", {
skip_if_offline()
skip_on_cran()
local_deauth()
local_interactive(FALSE)
withr::local_options(list(gargle_oauth_cache = FALSE))
# typical initial state: auth_active, but no token yet
.auth$clear_cred()
.auth$set_auth_active(TRUE)
expect_no_error(format(gs4_example("mini-gap")))
expect_snapshot(print(gs4_example("mini-gap")))
})
## low-level helpers ----
test_that("new_sheets_id() handles 0-length input and NA", {
expect_no_error(
out <- new_sheets_id(character())
)
expect_length(out, 0)
expect_s3_class(out, "sheets_id")
expect_no_error(
out <- new_sheets_id(NA_character_)
)
expect_true(is.na(out))
expect_s3_class(out, "sheets_id")
})
test_that("combining 2 sheets_id yields drive_id", {
id1 <- as_sheets_id("abc")
id2 <- as_sheets_id("def")
expect_s3_class(c(id1, id2), class(new_drive_id()))
})
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.