From 0e8b9114eba0533a12b6a2c36f06f69ed899c375 Mon Sep 17 00:00:00 2001 From: Quemuel Baruque Date: Thu, 29 Oct 2026 13:38:51 -0300 Subject: [PATCH 1/2] fix: reject mixed diseases at the legacy adapter boundary --- R/alert_functions.R | 8 ++++++++ tests/testthat/test-legacy-disease-guard.R | 11 +++++++++++ 2 files changed, 19 insertions(+) create mode 100644 tests/testthat/test-legacy-disease-guard.R diff --git a/R/alert_functions.R b/R/alert_functions.R index ebce96f..0f6d60e 100644 --- a/R/alert_functions.R +++ b/R/alert_functions.R @@ -349,6 +349,14 @@ pipe_infodengue <- function(cities, cid10="A90", datarelatorio, finalday = NULL, .as_legacy_alert_objects <- function(result) { data <- result$data + diseases <- unique(c(as.character(data$CID10), + as.character(result$parameters$cid10))) + if (!"CID10" %in% names(data) || + !"cid10" %in% names(result$parameters) || + length(diseases) != 1L || anyNA(diseases) || any(!nzchar(diseases))) { + stop("The legacy adapter requires exactly one disease in data and parameters.", + call. = FALSE) + } groups <- split(seq_len(nrow(data)), factor(data$cidade, levels = unique(data$cidade))) legacy <- lapply(names(groups), function(city) { diff --git a/tests/testthat/test-legacy-disease-guard.R b/tests/testthat/test-legacy-disease-guard.R new file mode 100644 index 0000000..b9052f3 --- /dev/null +++ b/tests/testthat/test-legacy-disease-guard.R @@ -0,0 +1,11 @@ +test_that("legacy adapter rejects mixed or inconsistent disease results", { + result <- review_result() + mixed <- result + mixed$data$CID10[1] <- "A92.0" + expect_error(AlertTools:::.as_legacy_alert_objects(mixed), "exactly one disease") + inconsistent <- result + inconsistent$parameters$cid10 <- "A92.0" + expect_error(AlertTools:::.as_legacy_alert_objects(inconsistent), "exactly one disease") + expect_s3_class(AlertTools:::.as_legacy_alert_objects(result)[[1]], "alerta") +}) + From b453e84bae944e3fe84269e29ae9abbd5e18c5f8 Mon Sep 17 00:00:00 2001 From: Quemuel Baruque Date: Thu, 29 Oct 2026 14:31:11 -0300 Subject: [PATCH 2/2] style: normalize validation EOF whitespace without changing expressions --- tests/testthat/test-legacy-disease-guard.R | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/testthat/test-legacy-disease-guard.R b/tests/testthat/test-legacy-disease-guard.R index b9052f3..77cd0e8 100644 --- a/tests/testthat/test-legacy-disease-guard.R +++ b/tests/testthat/test-legacy-disease-guard.R @@ -8,4 +8,3 @@ test_that("legacy adapter rejects mixed or inconsistent disease results", { expect_error(AlertTools:::.as_legacy_alert_objects(inconsistent), "exactly one disease") expect_s3_class(AlertTools:::.as_legacy_alert_objects(result)[[1]], "alerta") }) -