"data_save creates data file and updates database"
"SELECT * FROM data WHERE name = 'outputs/public/sample.csv'"
"data_spec_get retrieves data specification from config"
"data_read reads Excel files from config"
"data_save resolves dot notation to configured directories"
"data_save auto-detects type from file extension"
"data_save errors when directory doesn't exist without force"
"data_save creates directory with force = TRUE"
"data_save errors for simple filename without directory"
"data_save updates database with normalized name"
"SELECT * FROM data WHERE name = 'inputs.intermediate.my_data'"
"SELECT * FROM data WHERE name = 'raw.external_data'"
"data_add auto-detects file type from extension"
"SELECT * FROM data WHERE name = 'intermediate.processed'"
"data_add allows reading via data_read after registration"
"SELECT * FROM data WHERE name = 'raw.locked_file'"
"SELECT * FROM data WHERE name = 'raw.no_config'"

data_save updates database with normalized name

Error in `data_read("raw.readable")`: File not found: D:/temp/2026_02_04_18_15_16_11563/RtmpgVnYrK/framework_test_1789c4bd37f77/D:/temp/2026_02_04_18_15_16_11563/RtmpgVnYrK/framework_test_1789c4bd37f77/inputs/raw/readable.csv

data_add allows reading via data_read after registration

Error: No S3 connections configured. Add one via the GUI or in settings.yml:

connections:
  storage_buckets:
    my_s3:
      bucket: my-bucket
      region: us-east-1
  default_storage_bucket: my_s3

# Note: Most S3 tests require credentials and are skipped in CI
test_that(".resolve_s3_connection finds explicit connection", {
test_that(".resolve_s3_connection finds default connection", {
# Create config with default S3 connection
test_that(".resolve_s3_connection errors when connection not found", {
"No S3 connections configured|not found"
test_that(".resolve_s3_connection errors when credentials are missing", {
# S3 connection exists but no credentials
test_that(".resolve_s3_connection errors for non-S3 connection", {
"No S3 connections configured|not an S3 connection"
test_that(".resolve_s3_connection errors when missing credentials", {
test_that(".guess_content_type returns correct MIME types", {
test_that(".s3_public_url generates correct AWS URLs", {
test_that(".s3_public_url handles custom endpoints", {
test_that("publish validates source exists", {
my_s3 = list(driver = "s3", bucket = "test", region = "us-east-1", default = TRUE)
test_that("publish_notebook validates file extension", {
test_that("publish_data handles data frames", {
# This will fail at S3 upload (no real credentials), but we're testing
# that data frame handling works up to that point
df <- data.frame(x = 1:3, y = letters[1:3])
# Should fail at S3 upload, not at data frame handling
# Integration tests - only run if S3_TEST_BUCKET is set
"S3_TEST_BUCKET not set - skipping integration tests"
prefix = paste0("framework-test-", format(Sys.time(), "%Y%m%d%H%M%S")),