# ---- other ----
if (FALSE) {
## how the test file was created
## see also test-dplyr-compatbility.R
saveRDS(
drive_find(n_max = 10),
test_fixture("just_a_dribble.rds")
)
}
# ---- tests ----
test_that("as_id() copes with no input, NULL, and length-0 input", {
expect_null(as_id())
expect_null(as_id(NULL))
expect_identical(as_id(character()), new_drive_id())
})
test_that("as_id() errors for unanticipated input", {
expect_snapshot(as_id(mean), error = TRUE)
expect_snapshot(as_id(1.2), error = TRUE)
expect_snapshot(as_id(1L), error = TRUE)
})
test_that("as_id() returns non-URL character strings as ids", {
expect_true(is_drive_id(as_id(c("123", "456"))))
expect_identical(unclass(as_id(c("123", "456"))), c("123", "456"))
})
test_that("as_id() extracts ids from Drive URLs but not other URLs", {
x <- c(
"https://docs.google.com/document/d/doc12345/edit",
"https://drive.google.com/drive/folders/folder12345",
# https://github.com/tidyverse/googledrive/issues/450
"https://drive.google.com/drive/folders/folder12345?usp=drive_link",
"https://drive.google.com/open?id=blob12345",
"https://docs.google.com/a/example.com/spreadsheets/d/team12345",
# Team Drive URL
"https://drive.google.com/drive/u/0/folders/teamdrive12345"
)
expect_identical(
as_id(x),
as_id(c(
"doc12345", "folder12345", "folder12345", "blob12345",
"team12345", "teamdrive12345"
))
)
## properly recognizes a missing URL
x <- c(
"https://docs.google.com/document/d/doc12345/edit",
NA,
"https://drive.google.com/open?id=blob12345"
)
expect_identical(as_id(x), as_id(c("doc12345", NA, "blob12345")))
## properly recognizes a non-conforming URL
x <- "http://example.com"
expect_identical(unclass(as_id(x)), NA_character_)
})
test_that("as_id() works with dribble and dribble-ish data frames", {
x <- readRDS(test_fixture("just_a_dribble.rds"))
expect_true(is_drive_id(as_id(x)))
expect_identical(as_id(x), x$id)
class(x) <- class(x)[-1]
expect_true(is_drive_id(as_id(x)))
expect_identical(as_id(x), x$id)
})
test_that("presence of drive_id column doesn't prevent row binding of dribbles", {
x <- readRDS(test_fixture("just_a_dribble.rds"))
alfa <- x[1:2, ]
bravo <- x[3:4, ]
expect_no_error(
out <- vec_rbind(alfa, bravo)
)
expect_equal(out[c("name", "id")], x[1:4, c("name", "id")])
})
## how drive_ids look when printed
test_that("drive_id's are formatted OK", {
x <- readRDS(test_fixture("just_a_dribble.rds"))
expect_snapshot(print(x$id))
})
test_that("drive_ids look OK in a dribble and truncate gracefully", {
x <- readRDS(test_fixture("just_a_dribble.rds"))
expect_snapshot(print(x))
expect_snapshot(print(drive_reveal(x, "mime_type")))
x$id[1] <- NA
expect_snapshot(print(x))
})
test_that("gargle_map_cli() is implemented for drive_id", {
expect_snapshot(
gargle_map_cli(as_id(month.name[1:3]))
)
})
## low-level helpers
test_that("new_drive_id() handles 0-length input and NA", {
expect_no_error(
out <- new_drive_id(character())
)
expect_length(out, 0)
expect_true(is_drive_id(out))
expect_no_error(
out <- new_drive_id(NA_character_)
)
expect_true(is.na(out))
expect_true(is_drive_id(out))
expect_no_error(
out <- new_drive_id(c(NA_character_, "abc"))
)
expect_true(is.na(out[1]))
expect_true(is_drive_id(out))
})
test_that("validate_drive_id fails informatively", {
expect_snapshot(validate_drive_id(""), error = TRUE)
expect_snapshot(validate_drive_id("a@&"), error = TRUE)
})
test_that("drive_id is dropped when combining with character", {
x <- as_id("abc")
y <- "def"
out <- vec_c(x, y)
expect_identical(out, c("abc", "def"))
expect_false(is_drive_id(out))
out <- vec_c(y, x)
expect_identical(out, c("def", "abc"))
expect_false(is_drive_id(out))
})
test_that("you can't insert invalid strings into a drive_id", {
x <- as_id(month.name)
expect_true(is_drive_id(x))
expect_snapshot(x[2] <- "", error = TRUE)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.