tests/testthat/test-skimr.R

test_that("add_skimr_metadata works", {
  skip_if_not_installed(pkg = "skimr")
  # Test two data field types for proof of concept: character and numeric
  supertbl <- tibble::tribble(
    ~redcap_data, ~redcap_metadata,
    tibble(record_id = c(1, 2, 3), x = letters[1:3]), tibble(field_name = "x", field_label = "X Label"),
    tibble(record_id = c(1, 2, 3), y = seq(1:3)), tibble(field_name = "y", field_label = "Y Label")
  ) %>%
    as_supertbl()

  out <- add_skimr_metadata(supertbl)

  expected_skimr_char_cols <- c(
    "field_name",
    "field_label",
    "skim_type",
    "n_missing",
    "complete_rate",
    "character.min",
    "character.max",
    "character.empty",
    "character.n_unique",
    "character.whitespace"
  )

  expected_skimr_num_cols <- c(
    "field_name",
    "field_label",
    "skim_type",
    "n_missing",
    "complete_rate",
    "numeric.mean",
    "numeric.sd",
    "numeric.p0",
    "numeric.p25",
    "numeric.p50",
    "numeric.p75",
    "numeric.p100",
    "numeric.hist"
  )

  expect_true(all(expected_skimr_char_cols %in% names(out$redcap_metadata[[1]])))
  expect_true(all(expected_skimr_num_cols %in% names(out$redcap_metadata[[2]])))
})

Try the REDCapTidieR package in your browser

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

REDCapTidieR documentation built on April 3, 2025, 10:50 p.m.