Nothing
library(testthat)
library(froggeR)
# Tests for write_variables() ====
test_that("write_variables creates _variables.yml file in valid directory", {
tmp_dir <- withr::local_tempdir()
local_mocked_bindings(
.fetch_template = function(...) .fake_variables_template(),
.package = "froggeR"
)
local_mocked_bindings(
user_config_dir = function(...) file.path(tempdir(), "no_config"),
.package = "rappdirs"
)
result <- suppressMessages(write_variables(tmp_dir))
expect_true(file.exists(file.path(tmp_dir, "_variables.yml")))
expect_type(result, "character")
expect_equal(result, normalizePath(file.path(tmp_dir, "_variables.yml")))
})
test_that("write_variables errors when directory does not exist", {
expect_error(
write_variables("/nonexistent/directory/path"),
class = "froggeR_invalid_path"
)
})
test_that("write_variables opens existing file without error", {
tmp_dir <- withr::local_tempdir()
existing_file <- file.path(tmp_dir, "_variables.yml")
writeLines("existing: content", existing_file)
local_mocked_bindings(
user_config_dir = function(...) file.path(tempdir(), "no_config"),
.package = "rappdirs"
)
result <- suppressMessages(write_variables(tmp_dir))
expect_equal(result, normalizePath(existing_file))
# Content should be unchanged
expect_equal(readLines(existing_file), "existing: content")
})
test_that("write_variables creates file with valid YAML structure", {
tmp_dir <- withr::local_tempdir()
local_mocked_bindings(
.fetch_template = function(...) .fake_variables_template(),
.package = "froggeR"
)
local_mocked_bindings(
user_config_dir = function(...) file.path(tempdir(), "no_config"),
.package = "rappdirs"
)
result <- suppressMessages(write_variables(tmp_dir))
content <- yaml::read_yaml(result)
expect_type(content, "list")
expected_keys <- c("name", "email", "orcid", "url", "github", "affiliations")
expect_true(any(expected_keys %in% names(content)))
})
test_that("write_variables returns normalized absolute path", {
tmp_dir <- withr::local_tempdir()
local_mocked_bindings(
.fetch_template = function(...) .fake_variables_template(),
.package = "froggeR"
)
local_mocked_bindings(
user_config_dir = function(...) file.path(tempdir(), "no_config"),
.package = "rappdirs"
)
result <- suppressMessages(write_variables(tmp_dir))
expect_true(grepl("^/", result) || grepl("^[A-Z]:", result))
expect_equal(basename(result), "_variables.yml")
})
test_that("write_variables errors on invalid paths", {
expect_error(
write_variables(NULL),
class = "froggeR_invalid_path"
)
expect_error(
write_variables(NA_character_),
class = "froggeR_invalid_path"
)
expect_error(
write_variables("/totally/fake/path"),
class = "froggeR_invalid_path"
)
})
test_that("write_variables uses global config when available", {
tmp_dir <- withr::local_tempdir()
fake_config_dir <- withr::local_tempdir()
# Create a fake global config file
global_config <- file.path(fake_config_dir, "_variables.yml")
writeLines(c("name: Global User", "email: global@example.com"), global_config)
local_mocked_bindings(
user_config_dir = function(...) fake_config_dir,
.package = "rappdirs"
)
result <- suppressMessages(write_variables(tmp_dir))
content <- readLines(file.path(tmp_dir, "_variables.yml"))
expect_true(any(grepl("Global User", content)))
})
test_that("write_variables handles path with trailing slash", {
tmp_dir <- withr::local_tempdir()
local_mocked_bindings(
.fetch_template = function(...) .fake_variables_template(),
.package = "froggeR"
)
local_mocked_bindings(
user_config_dir = function(...) file.path(tempdir(), "no_config"),
.package = "rappdirs"
)
path_with_slash <- paste0(tmp_dir, "/")
result <- suppressMessages(write_variables(path_with_slash))
expect_true(file.exists(result))
expect_equal(basename(result), "_variables.yml")
})
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.