diff --git a/R/downloads.R b/R/downloads.R index 7239827a..0fd8ccf7 100644 --- a/R/downloads.R +++ b/R/downloads.R @@ -27,7 +27,7 @@ download <- function(model_output, type, path_results, input, language = NULL) { add_state_json(out$path, input$state) } } else if (type == "agyw") { - out <- naomi::hintr_prepare_agyw_download(model_output, input$pjnz, + out <- naomi::hintr_prepare_agyw_download(model_output, input$pjnz$path, download_path) } else { func <- switch(type, diff --git a/R/test_helpers.R b/R/test_helpers.R index e00c599f..595448a1 100644 --- a/R/test_helpers.R +++ b/R/test_helpers.R @@ -10,7 +10,6 @@ #' @return JSON built from template and params. #' @keywords internal #' - build_json <- function(template, params) { param_env <- list2env(params, parent = .GlobalEnv) glue::glue(template, .envir = param_env, .open = '"<+', @@ -102,8 +101,7 @@ setup_payload_download_request <- function(version = NULL, #' @param naomi_output Calibrated naomi output #' #' @return Calibrated naomi output matched to MWI test data on `naomi.resources` to be used to generate the agyw tool. -#' @export - +#' @keywords internal make_agyw_testfiles <- function(naomi_output){ # Create naomi outputs align with testing data in naomi.resources: @@ -112,18 +110,18 @@ make_agyw_testfiles <- function(naomi_output){ output <- naomi::read_hintr_output(naomi_output$model_output_path) # Areas - meta_area_demo <- dplyr::mutate(output$output_package$meta_area, - area_id = dplyr::if_else(area_id == "MWI", "MWI_demo", area_id), - parent_area_id = dplyr::if_else(parent_area_id == "MWI", "MWI_demo", parent_area_id)) - - meta_area_demo <- dplyr::filter(meta_area_demo, area_level <= 2) + meta_area_demo <- output$output_package$meta_area + meta_area_demo[meta_area_demo$area_id == "MWI", "area_id"] = "MWI_demo" + parent_area_id_replace <- meta_area_demo$parent_area_id == "MWI" & + !is.na(meta_area_demo$parent_area_id) + meta_area_demo[parent_area_id_replace, "parent_area_id"] = "MWI_demo" + meta_area_demo <- meta_area_demo[meta_area_demo$area_level <= 2, ] # Indicators - ind_demo <- dplyr::mutate(output$output_package$indicators, - area_id = dplyr::if_else(area_id == "MWI", "MWI_demo", area_id)) - - ind_demo <- dplyr::filter(ind_demo, area_id %in% meta_area_demo$area_id) - + ind_demo <- output$output_package$indicators + ind_replace <- ind_demo$area_id == "MWI" & !is.na(ind_demo$area_id) + ind_demo[ind_replace, "area_id"] <- "MWI_demo" + ind_demo <- ind_demo[ind_demo$area_id %in% meta_area_demo$area_id, ] # Options options_demo <- output$output_package$fit$model_options @@ -140,11 +138,7 @@ make_agyw_testfiles <- function(naomi_output){ naomi:::hintr_save(demo, out_demo) # Add to existing hintr_test data - agyw_output_demo <- naomi_output - agyw_output_demo$model_output_path <- out_demo + naomi_output$model_output_path <- out_demo - agyw_output_demo + naomi_output } - - - diff --git a/man/build_json.Rd b/man/build_json.Rd index a68c8fbe..fb77d36e 100644 --- a/man/build_json.Rd +++ b/man/build_json.Rd @@ -18,4 +18,3 @@ JSON built from template and params. Build JSON from template and a set of params } \keyword{internal} - diff --git a/man/make_agyw_testfiles.Rd b/man/make_agyw_testfiles.Rd new file mode 100644 index 00000000..58317f32 --- /dev/null +++ b/man/make_agyw_testfiles.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/test_helpers.R +\name{make_agyw_testfiles} +\alias{make_agyw_testfiles} +\title{Build JSON from template and a set of params} +\usage{ +make_agyw_testfiles(naomi_output) +} +\arguments{ +\item{naomi_output}{Calibrated naomi output} +} +\value{ +Calibrated naomi output matched to MWI test data on \code{naomi.resources} to be used to generate the agyw tool. +} +\description{ +Build JSON from template and a set of params +} +\keyword{internal} diff --git a/scripts/run_model b/scripts/run_model index 28800c02..68b180a8 100755 --- a/scripts/run_model +++ b/scripts/run_model @@ -84,7 +84,7 @@ output <- naomi::read_hintr_output(calibrated$model_output_path) if(output$output_package$fit$model_options$area_scope == "MWI"){ - agyw_test_outputs <- make_agyw_testfiles(calibrated) + agyw_test_outputs <- hintr:::make_agyw_testfiles(calibrated) } else { diff --git a/tests/testthat/helper-queue.R b/tests/testthat/helper-queue.R index 2ac5c0bc..9480bd31 100644 --- a/tests/testthat/helper-queue.R +++ b/tests/testthat/helper-queue.R @@ -88,6 +88,12 @@ test_queue_result <- function(model = mock_model, calibrate = mock_calibrate, ) } +add_queue_result <- function(queue, res) { + new_id <- queue$submit(quote(identity(res))) + queue$queue$task_wait(new_id) + new_id +} + prerun_inputs <- list( pjnz = "testdata/Malawi2019.PJNZ", population = "testdata/population.csv", diff --git a/tests/testthat/test-01-endpoints-download.R b/tests/testthat/test-01-endpoints-download.R index 363591c9..50762858 100644 --- a/tests/testthat/test-01-endpoints-download.R +++ b/tests/testthat/test-01-endpoints-download.R @@ -857,6 +857,10 @@ test_that("api can create agyw download", { q <- test_queue_result() api <- api_build(q$queue) + res <- q$queue$result(q$calibrate_id) + agyw_result <- make_agyw_testfiles(res) + agyw_result_id <- add_queue_result(q$queue, agyw_result) + ## Prepare body payload <- setup_payload_download_request(include_notes = FALSE, include_state = FALSE, @@ -864,7 +868,7 @@ test_that("api can create agyw download", { ## Submit download request submit <- api$request("POST", - paste0("/download/submit/agyw/", q$calibrate_id), + paste0("/download/submit/agyw/", agyw_result_id), body = payload) submit_body <- jsonlite::fromJSON(submit$body) expect_equal(submit$status, 200)