tests/testthat/test-validate.R

test_that("validate_columns correctly identifies missing columns", {
  data <- data.frame(year = 2020, citation = "Test")  # Missing many required columns

  expect_error(validate_columns(data),
               "The imported data is missing the following required columns")
})

test_that("validate_columns correctly identifies extra columns", {
  data <- data.frame(year = 2020, citation = "Test", keywords = "data", profession = "statistician",
                     electronic = TRUE, purpose = "research", study_design = "RCT",
                     outcome_var = "success", predictor_var = "experience", sample = 100,
                     dropout_rate = 5, setting = "urban", inclusion_criteria = "age>18",
                     ethnicity = "diverse", age = 30, sex = "M", income = 50000,
                     education = "PhD", measures = "survey", analysis = "regression",
                     results = "positive", limitations = "sample size",
                     implications = "policy change", ethical_concerns = "none",
                     biases = "response", notes = "N/A", extra1 = "Extra data")

  expect_message(validate_columns(data, extra_columns = "extra1", drop_extra = FALSE),
                 "Successfully imported matrix with")
})

test_that("validate_columns drops unwanted extra columns when drop_extra = TRUE", {
  data <- data.frame(year = 2020, citation = "Test", keywords = "data", profession = "statistician",
                     electronic = TRUE, purpose = "research", study_design = "RCT",
                     outcome_var = "success", predictor_var = "experience", sample = 100,
                     dropout_rate = 5, setting = "urban", inclusion_criteria = "age>18",
                     ethnicity = "diverse", age = 30, sex = "M", income = 50000,
                     education = "PhD", measures = "survey", analysis = "regression",
                     results = "positive", limitations = "sample size",
                     implications = "policy change", ethical_concerns = "none",
                     biases = "response", notes = "N/A", extra1 = "Extra data",
                     extra2 = "Remove me")

  cleaned_data <- validate_columns(data, extra_columns = "extra1", drop_extra = TRUE)

  expect_false("extra2" %in% colnames(cleaned_data))  # extra2 should be removed
  expect_true("extra1" %in% colnames(cleaned_data))   # extra1 should remain
})

test_that("validate_columns works silently when silent = TRUE", {
  data <- data.frame(year = 2020, citation = "Test", keywords = "data", profession = "statistician",
                     electronic = TRUE, purpose = "research", study_design = "RCT",
                     outcome_var = "success", predictor_var = "experience", sample = 100,
                     dropout_rate = 5, setting = "urban", inclusion_criteria = "age>18",
                     ethnicity = "diverse", age = 30, sex = "M", income = 50000,
                     education = "PhD", measures = "survey", analysis = "regression",
                     results = "positive", limitations = "sample size",
                     implications = "policy change", ethical_concerns = "none",
                     biases = "response", notes = "N/A", extra1 = "Extra data")

  expect_silent(validate_columns(data, extra_columns = "extra1", drop_extra = FALSE, silent = TRUE))
})

test_that("validate_columns returns a correctly structured data frame", {
  data <- data.frame(year = 2020, citation = "Test", keywords = "data", profession = "statistician",
                     electronic = TRUE, purpose = "research", study_design = "RCT",
                     outcome_var = "success", predictor_var = "experience", sample = 100,
                     dropout_rate = 5, setting = "urban", inclusion_criteria = "age>18",
                     ethnicity = "diverse", age = 30, sex = "M", income = 50000,
                     education = "PhD", measures = "survey", analysis = "regression",
                     results = "positive", limitations = "sample size",
                     implications = "policy change", ethical_concerns = "none",
                     biases = "response", notes = "N/A")

  result <- validate_columns(data)

  expect_s3_class(result, "data.frame")
  expect_equal(ncol(result), length(colnames(data)))  # Should retain same columns
})

Try the matriz package in your browser

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

matriz documentation built on April 3, 2025, 7:22 p.m.