# ---- nm_fun ---- me_ <- nm_fun("TEST-sheet_write") # ---- tests ---- test_that("sheet_write() writes what it should", { skip_if_offline() skip_if_no_token() dat <- range_read( test_sheet("googlesheets4-col-types"), sheet = "lots-of-types", col_types = "lccinDT" # TODO: revisit when 'f' means factor ) dat$factor <- factor(dat$factor) ss <- local_ss(me_("datetimes")) sheet_write(dat, ss) x <- range_read(ss, sheet = "dat", col_types = "C") # the main interesting bit to test is whether we successfully sent # correct value for the date and datetime, with a sane (= ISO 8601) format expect_equal( purrr::pluck(x, "date", 1, "formattedValue"), format(dat$date[1]) ) expect_equal( purrr::pluck(x, "date", 1, "effectiveFormat", "numberFormat", "type"), "DATE" ) expect_equal( purrr::pluck(x, "date", 1, "effectiveFormat", "numberFormat", "pattern"), "yyyy-mm-dd" ) expect_equal( purrr::pluck(x, "datetime", 1, "formattedValue"), format(dat$datetime[1]) ) expect_equal( purrr::pluck(x, "datetime", 1, "effectiveFormat", "numberFormat", "type"), "DATE_TIME" ) expect_equal( purrr::pluck(x, "datetime", 1, "effectiveFormat", "numberFormat", "pattern"), "yyyy-mm-dd hh:mm:ss" ) }) test_that("sheet_write() can figure out (work)sheet name", { skip_if_offline() skip_if_no_token() foofy <- data.frame(x = 1:3, y = letters[1:3]) ss <- local_ss(me_("sheetnames")) # get (work)sheet name from data frame's name sheet_write(foofy, ss) expect_equal(tail(sheet_names(ss), 1), "foofy") # we don't clobber existing (work)sheet if name was inferred sheet_write(foofy, ss) expect_equal(tail(sheet_names(ss), 1), "Sheet2") # we do write into existing (work)sheet if name is explicitly given sheet_write(foofy, ss, sheet = "foofy") expect_setequal(sheet_names(ss), c("Sheet1", "Sheet2", "foofy")) # we do write into existing (work)sheet if position is explicitly given sheet_write(foofy, ss, sheet = 2) expect_setequal(sheet_names(ss), c("Sheet1", "Sheet2", "foofy")) })