# ---- nm_fun ---- me_ <- nm_fun("TEST-drive_upload") nm_ <- nm_fun("TEST-drive_upload", user_run = FALSE) # ---- clean ---- if (CLEAN) { drive_trash(c( nm_("upload-into-me"), nm_("upload-via-folder-shortcut"), nm_("DESCRIPTION") )) } # ---- setup ---- if (SETUP) { drive_mkdir(nm_("upload-into-me")) shortcut_create( nm_("upload-into-me"), name = nm_("upload-via-folder-shortcut") ) } # ---- tests ---- test_that("drive_upload() detects non-existent file", { expect_snapshot( drive_upload("no-such-file", "File does not exist"), error = TRUE ) }) test_that("drive_upload() places file in non-root folder, with new name", { skip_if_no_token() skip_if_offline() defer_drive_rm(me_("DESCRIPTION")) destination <- drive_get(nm_("upload-into-me")) uploadee <- drive_upload( system.file("DESCRIPTION"), path = destination, name = me_("DESCRIPTION") ) expect_dribble(uploadee) expect_identical(nrow(uploadee), 1L) expect_identical(drive_reveal(uploadee, "parent")$id_parent, destination$id) }) test_that("drive_upload() can place file via folder-shortcut", { skip_if_no_token() skip_if_offline() upload_name <- me_("upload-via-shortcut-folder") defer_drive_rm(upload_name) target_parent <- drive_get(nm_("upload-into-me")) shortcut <- nm_("upload-via-folder-shortcut") uploadee <- drive_upload( system.file("DESCRIPTION"), path = shortcut, name = upload_name ) expect_equal(drive_reveal(uploadee, "parent")$id_parent, target_parent$id) }) test_that("drive_upload() accepts body metadata via ...", { skip_if_no_token() skip_if_offline() defer_drive_rm(me_("DESCRIPTION")) uploadee <- drive_upload( system.file("DESCRIPTION"), name = me_("DESCRIPTION"), starred = TRUE ) expect_dribble(uploadee) expect_identical(nrow(uploadee), 1L) expect_true(uploadee$drive_resource[[1]]$starred) }) # https://github.com/tidyverse/googledrive/pull/342 test_that("drive_upload() does not mangle name with multi-byte characters", { skip_if_no_token() skip_if_offline() # KATAKANA LETTERS MA RU TI tricky_bit <- "\u30DE\u30EB\u30C1" filename_1 <- me_(paste0("multibyte-chars-1-", tricky_bit)) defer_drive_rm(filename_1) file_1 <- drive_upload( drive_example_local("chicken.csv"), path = filename_1, type = "spreadsheet" ) expect_equal(charToRaw(file_1$name), charToRaw(filename_1)) # TODO: when I was here, I hoped to also handle the case where the user # allows the Drive file name to come from its local name and *that* # name contains CJK characters # Ultimately I concluded that curl (the R package) doesn't really support # this currently, so I'm leaving it alone for now. # Leaving these notes, in case I ever come through here again. # https://github.com/jeroen/curl/issues/182 # https://github.com/curl/curl/issues/345 # filename_2 <- me_(paste0("multibyte-chars-2-", tricky_bit)) # filename_2 <- file.path(tempdir(), filename_2) # file.copy(drive_example_local("chicken.csv"), filename_2) # expect_true(file.exists(filename_2)) # file_2 <- drive_upload(media = filename_2) # expect_equal(charToRaw(file_2$name), charToRaw(filename_2)) }) test_that("drive_upload() can convert local markdown to a Doc", { skip_if_no_token() skip_if_offline() file_to_upload <- system.file( "extdata", "example_files", "markdown.md", package = "googledrive" ) upload_name <- me_("upload-md-to-doc") defer_drive_rm(upload_name) local_drive_loud_and_wide() drive_upload_message <- capture.output( uploadee <- drive_upload( file_to_upload, name = upload_name, type = "document" ), type = "message" ) drive_upload_message <- drive_upload_message %>% scrub_filepath(upload_name) %>% scrub_filepath(file_to_upload) %>% scrub_file_id() expect_snapshot( write_utf8(drive_upload_message) ) expect_equal( pluck(uploadee, "drive_resource", 1, "mimeType"), drive_mime_type("document") ) })