Skip to content

Commit 8e4fb6c

Browse files
committed
verify that field specs are all EpidataFieldInfo objs
1 parent 4228e79 commit 8e4fb6c

File tree

3 files changed

+24
-9
lines changed

3 files changed

+24
-9
lines changed

R/epidatacall.R

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,13 @@
4141
#' @return
4242
#' - For `create_epidata_call`: an `epidata_call` object
4343
#'
44-
#' @importFrom purrr map_chr
44+
#' @importFrom purrr map_chr map_lgl
4545
create_epidata_call <- function(endpoint, params, meta = NULL,
4646
only_supports_classic = FALSE) {
4747
stopifnot(is.character(endpoint), length(endpoint) == 1)
4848
stopifnot(is.list(params))
4949
stopifnot(is.null(meta) || is.list(meta))
50+
stopifnot(all(map_lgl(meta, ~ inherits(.x, "EpidataFieldInfo"))))
5051
stopifnot(is.logical(only_supports_classic), length(only_supports_classic) == 1)
5152

5253
if (length(unique(meta)) != length(meta)) {
@@ -60,7 +61,7 @@ create_epidata_call <- function(endpoint, params, meta = NULL,
6061
)
6162
}
6263

63-
meta_field_names <- map_chr(meta, ~ .x$name)
64+
meta_field_names <- map_chr(meta, "name")
6465
if (length(meta_field_names) != length(unique(meta_field_names))) {
6566
cli::cli_abort(
6667
c(

R/model.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ parse_data_frame <- function(epidata_call, df, disable_date_parsing = FALSE) {
148148
return(df)
149149
}
150150

151-
meta_field_names <- map_chr(meta, ~ .x$name)
151+
meta_field_names <- map_chr(meta, "name")
152152
missing_fields <- setdiff(names(df), meta_field_names)
153153
if (
154154
length(missing_fields) != 0

tests/testthat/test-epidatacall.R

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,10 @@ test_that("create_epidata_call basic behavior", {
166166
params <- list()
167167

168168
# Success
169-
meta <- list(list(name = "time_value", class = "date"), list(name = "value", class = "double"))
169+
meta <- list(
170+
create_epidata_field_info("time_value", "date"),
171+
create_epidata_field_info("value", "float")
172+
)
170173
expected <- list(
171174
endpoint = endpoint,
172175
params = params,
@@ -175,7 +178,6 @@ test_that("create_epidata_call basic behavior", {
175178
only_supports_classic = FALSE
176179
)
177180
class(expected) <- "epidata_call"
178-
179181
expect_identical(create_epidata_call(endpoint, params, meta = meta), expected)
180182

181183
expected$meta <- list()
@@ -189,10 +191,22 @@ test_that("create_epidata_call fails when meta arg contains duplicates", {
189191
params <- list()
190192

191193
# Duplicate names
192-
meta <- list(list(name = "time_value", class = "date"), list(name = "time_value", class = "int"))
193-
expect_error(create_epidata_call(endpoint, params, meta = meta), class = "epidatr__duplicate_meta_names")
194+
meta <- list(
195+
create_epidata_field_info("time_value", "date"),
196+
create_epidata_field_info("time_value", "int")
197+
)
198+
expect_error(
199+
create_epidata_call(endpoint, params, meta = meta),
200+
class = "epidatr__duplicate_meta_names"
201+
)
194202

195203
# Duplicate entries
196-
meta <- list(list(name = "time_value", class = "date"), list(name = "time_value", class = "date"))
197-
expect_error(create_epidata_call(endpoint, params, meta = meta), class = "epidatr__duplicate_meta_entries")
204+
meta <- list(
205+
create_epidata_field_info("time_value", "date"),
206+
create_epidata_field_info("time_value", "date")
207+
)
208+
expect_error(
209+
create_epidata_call(endpoint, params, meta = meta),
210+
class = "epidatr__duplicate_meta_entries"
211+
)
198212
})

0 commit comments

Comments
 (0)