tests/testthat/test-validate_inputs.R

test_that("validate_metadata canonicalizes column names", {
  df <- data.frame(DATASET = "ADSL", VARIABLE = "AGE", LABEL = "Age")
  result <- validate_metadata(df, kind = "adam")
  expect_true(all(c("dataset", "variable", "label") %in% names(result)))
  expect_s3_class(result, "tbl_df")
})

test_that("validate_metadata errors on missing required columns", {
  df <- data.frame(var = "AGE", label = "Age")
  expect_error(validate_metadata(df, kind = "adam"), "missing required column")
})

test_that("validate_metadata fills optional columns with NA", {
  df <- data.frame(dataset = "ADSL", variable = "AGE")
  result <- validate_metadata(df, kind = "sdtm")
  expect_true("label" %in% names(result))
  expect_true("type" %in% names(result))
  expect_true(is.na(result$label[1]))
})

test_that("validate_metadata trims whitespace", {
  df <- data.frame(dataset = "  ADSL  ", variable = "  AGE  ")
  result <- validate_metadata(df, kind = "adam")
  expect_equal(result$dataset[1], "ADSL")
  expect_equal(result$variable[1], "AGE")
})

test_that("validate_metadata rejects non-data.frame input", {
  expect_error(validate_metadata("not_a_df", kind = "adam"), "must be a data.frame")
})

test_that("validate_mapping canonicalizes and uppercases", {
  df <- data.frame(
    ADAM_DATASET = "adsl", ADAM_VAR = "age",
    SDTM_DOMAIN = "dm", SDTM_VAR = "age"
  )
  result <- validate_mapping(df)
  expect_equal(result$adam_dataset[1], "ADSL")
  expect_equal(result$sdtm_domain[1], "DM")
  expect_s3_class(result, "tbl_df")
})

test_that("validate_mapping handles case-insensitive columns with dots", {
  df <- data.frame(
    Adam.Dataset = "ADSL", Adam.Var = "AGE",
    Sdtm.Domain = "DM", Sdtm.Var = "AGE"
  )
  result <- validate_mapping(df)
  expect_true(all(c("adam_dataset", "adam_var", "sdtm_domain", "sdtm_var") %in% names(result)))
})

test_that("validate_mapping errors on missing required columns", {
  df <- data.frame(adam_dataset = "ADSL", adam_var = "AGE")
  expect_error(validate_mapping(df), "missing required column")
})

test_that("validate_mapping fills optional columns", {
  df <- data.frame(
    adam_dataset = "ADSL", adam_var = "AGE",
    sdtm_domain = "DM", sdtm_var = "AGE"
  )
  result <- validate_mapping(df)
  expect_true("derivation_text" %in% names(result))
  expect_true("confidence" %in% names(result))
  expect_true(is.na(result$derivation_text[1]))
})

test_that("validate_mapping respects uppercase_datasets = FALSE", {
  df <- data.frame(
    adam_dataset = "adsl", adam_var = "age",
    sdtm_domain = "dm", sdtm_var = "age"
  )
  result <- validate_mapping(df, uppercase_datasets = FALSE)
  expect_equal(result$adam_dataset[1], "adsl")
  expect_equal(result$sdtm_domain[1], "dm")
})

Try the r4subtrace package in your browser

Any scripts or data that you put into this service are public.

r4subtrace documentation built on March 4, 2026, 1:07 a.m.