Nothing
# tests/testthat/test-seqic_indicator_7.R
testthat::test_that("seqic_indicator_7() correctly expects columns to be in the 'data'", {
# Minimal valid data
data <- tibble::tibble(
id = as.character(1:5),
trauma_level = c("I", "II", "III", "IV", "V"),
time_to_arrival = c(200, 100, 220, 150, 400),
transfer_out = c("No", "No", "No", "No", "Yes")
)
testthat::expect_error(
traumar::seqic_indicator_7(
data = data,
level = fake,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = not_a_column,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = "false",
transfer_out_indicator = transfer_out
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = not_real
),
regexp = "It was not possible to validate"
)
})
test_that("Valid input returns expected structure and values", {
data <- tibble::tibble(
id = as.character(1:5),
trauma_level = c("I", "II", "III", "IV", "V"),
time_to_arrival = c(200, 100, 220, 150, 400),
transfer_out = c("No", "No", "No", "No", "Yes")
)
res <- traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out
)
expect_s3_class(res, "tbl_df")
expect_named(res, c("data", "numerator_7", "denominator_7", "seqic_7"))
expect_equal(res$numerator_7, 2)
expect_equal(res$denominator_7, 4)
expect_equal(res$seqic_7, 0.5)
})
test_that("Grouping works correctly", {
data <- tibble::tibble(
id = c(1, 2, 3, 4),
trauma_level = c("I", "I", "II", "II"),
time_to_arrival = c(200, 100, 300, 90),
transfer_out = c("No", "No", "No", "No"),
region = c("North", "North", "South", "South")
)
res <- traumar::seqic_indicator_7(
data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out,
groups = "region"
)
expect_equal(nrow(res), 2)
expect_true(all(
c("region", "numerator_7", "denominator_7", "seqic_7") %in% names(res)
))
})
test_that("Confidence intervals are added correctly", {
data <- tibble::tibble(
id = 1:6,
trauma_level = rep("I", 6),
time_to_arrival = c(200, 210, 90, 80, 185, 195),
transfer_out = rep("No", 6)
)
res <- traumar::seqic_indicator_7(
data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out,
calculate_ci = "wilson"
)
expect_true(all(c("lower_ci_7", "upper_ci_7") %in% names(res)))
expect_true(res$lower_ci_7 < res$seqic_7 && res$upper_ci_7 > res$seqic_7)
})
#-------------------------------
# Input Validation Tests
#-------------------------------
test_that("Errors are thrown for invalid `data` input", {
expect_error(
traumar::seqic_indicator_7(
"not_a_data",
trauma_level,
id,
time_to_arrival,
transfer_out
),
"data"
)
})
test_that("Errors are thrown for invalid `level` column type", {
data <- tibble::tibble(
id = 1,
trauma_level = 1L,
time_to_arrival = 10,
transfer_out = "No"
)
expect_error(
traumar::seqic_indicator_7(
data,
trauma_level,
id,
time_to_arrival,
transfer_out
),
"level"
)
})
test_that("Errors are thrown for invalid `unique_incident_id` type", {
data <- tibble::tibble(
id = list("a"),
trauma_level = "I",
time_to_arrival = 10,
transfer_out = "No"
)
expect_error(
traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out
),
"unique_incident_id"
)
})
test_that("Errors are thrown for invalid `transfer_out_indicator` type", {
data <- tibble::tibble(
id = 1,
trauma_level = "I",
time_to_arrival = 10,
transfer_out = list(TRUE)
)
expect_error(
traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out
),
"transfer_out_indicator"
)
})
test_that("Errors are thrown for non-numeric `time_from_injury_to_arrival`", {
data <- tibble::tibble(
id = 1,
trauma_level = "I",
time_to_arrival = "late",
transfer_out = "No"
)
expect_error(
traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out
),
"time_from_injury_to_arrival"
)
})
test_that("Invalid group column throws error", {
data <- tibble::tibble(
id = 1,
trauma_level = "I",
time_to_arrival = 10,
transfer_out = "No"
)
expect_error(
traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out,
groups = "not_a_column"
),
"not valid columns"
)
})
test_that("Invalid calculate_ci argument throws error", {
data <- tibble::tibble(
id = 1,
trauma_level = "I",
time_to_arrival = 10,
transfer_out = "No"
)
expect_error(
traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out,
calculate_ci = "bad_method"
),
"calculate_ci"
)
})
test_that("Invalid included_levels throws error", {
data <- tibble::tibble(
id = 1,
trauma_level = "I",
time_to_arrival = 10,
transfer_out = "No"
)
expect_error(
traumar::seqic_indicator_7(
data = data,
level = trauma_level,
unique_incident_id = id,
time_from_injury_to_arrival = time_to_arrival,
transfer_out_indicator = transfer_out,
included_levels = list("I")
),
"included_levels"
)
})
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.