Nothing
# test-missing_registry.R
# TDD tests for missing mechanism registry — Objective 22
# These tests define the expected behavior of the missing registry BEFORE implementation.
test_that("get_missing_config returns valid configuration for known mechanisms", {
cfg <- get_missing_config("mcar")
expect_type(cfg, "list")
expect_true(all(c("requires_rate", "requires_test_design", "test_design_key",
"print_label", "print_style", "design_unit") %in% names(cfg)))
expect_type(cfg$requires_rate, "logical")
expect_type(cfg$requires_test_design, "logical")
expect_type(cfg$print_label, "character")
expect_type(cfg$print_style, "character")
})
test_that("get_missing_config errors on unknown mechanism with helpful message", {
expect_error(
get_missing_config("bogus"),
"must be one of"
)
err <- tryCatch(get_missing_config("bogus"), error = function(e) e$message)
expect_true(grepl("none", err, ignore.case = TRUE))
expect_true(grepl("mcar", err, ignore.case = TRUE))
expect_true(grepl("booklet", err, ignore.case = TRUE))
})
test_that("valid_missing_mechanisms returns character vector of all 5 mechanisms", {
vm <- valid_missing_mechanisms()
expect_type(vm, "character")
expect_length(vm, 5L)
expect_setequal(
vm,
c("none", "mcar", "mar", "booklet", "linking")
)
})
test_that("get_missing_config('none') has correct metadata", {
cfg <- get_missing_config("none")
expect_false(cfg$requires_rate)
expect_false(cfg$requires_test_design)
expect_true(is.na(cfg$test_design_key))
expect_equal(cfg$print_label, "none (complete data)")
expect_equal(cfg$print_style, "plain")
expect_true(is.na(cfg$design_unit))
})
test_that("get_missing_config('mcar') has correct metadata", {
cfg <- get_missing_config("mcar")
expect_true(cfg$requires_rate)
expect_false(cfg$requires_test_design)
expect_true(is.na(cfg$test_design_key))
expect_equal(cfg$print_label, "MCAR")
expect_equal(cfg$print_style, "rate")
expect_true(is.na(cfg$design_unit))
})
test_that("get_missing_config('mar') has correct metadata", {
cfg <- get_missing_config("mar")
expect_true(cfg$requires_rate)
expect_false(cfg$requires_test_design)
expect_true(is.na(cfg$test_design_key))
expect_equal(cfg$print_label, "MAR")
expect_equal(cfg$print_style, "rate")
expect_true(is.na(cfg$design_unit))
})
test_that("get_missing_config('booklet') has correct metadata", {
cfg <- get_missing_config("booklet")
expect_false(cfg$requires_rate)
expect_true(cfg$requires_test_design)
expect_equal(cfg$test_design_key, "booklet_matrix")
expect_equal(cfg$print_label, "booklet design")
expect_equal(cfg$print_style, "design")
expect_equal(cfg$design_unit, "booklets")
})
test_that("get_missing_config('linking') has correct metadata", {
cfg <- get_missing_config("linking")
expect_false(cfg$requires_rate)
expect_true(cfg$requires_test_design)
expect_equal(cfg$test_design_key, "linking_matrix")
expect_equal(cfg$print_label, "linking design")
expect_equal(cfg$print_style, "design")
expect_equal(cfg$design_unit, "forms")
})
test_that("registry keys equal valid_missing_mechanisms() output", {
registry <- .get_missing_registry()
expect_setequal(names(registry), valid_missing_mechanisms())
})
test_that("all 5 mechanisms are retrievable from registry", {
for (mech in valid_missing_mechanisms()) {
expect_no_error(get_missing_config(mech))
}
})
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.