diff --git a/R/R/REDCap_split.r b/R/R/REDCap_split.r index 685c1ed..3f516ac 100644 --- a/R/R/REDCap_split.r +++ b/R/R/REDCap_split.r @@ -87,11 +87,7 @@ REDCap_split <- function(records, # Process user input records <- process_user_input(records) - metadata <- process_user_input(metadata) - - # Remove "tbl_df" class from metadata, if present, due to difference in - # `[.tbl_df` behavior as compared to `[.data.frame` behavior (see issue #12) - if(inherits(metadata, "tbl_df")) class(metadata) <- "data.frame" + metadata <- as.data.frame(process_user_input(metadata)) # See issue #12 # Get the variable names in the dataset vars_in_data <- names(records) diff --git a/R/R/process_user_input.r b/R/R/process_user_input.r index 5a4a3ac..fe6de68 100644 --- a/R/R/process_user_input.r +++ b/R/R/process_user_input.r @@ -13,7 +13,7 @@ process_user_input.default <- function(x, ...) { } process_user_input.data.frame <- function(x, ...) { - x + x } process_user_input.character <- function(x, ...) { diff --git a/R/tests/testthat/test-csv-exports.R b/R/tests/testthat/test-csv-exports.R index 098e585..9e42432 100644 --- a/R/tests/testthat/test-csv-exports.R +++ b/R/tests/testthat/test-csv-exports.R @@ -13,10 +13,10 @@ records <- read.csv( ) ) +redcap_output_csv1 <- REDCap_split(records, metadata) + # Test that basic CSV export matches reference ------------------------------ test_that("CSV export matches reference", { - redcap_output_csv1 <- REDCap_split(records, metadata) - expect_known_hash(redcap_output_csv1, "f74558d1939c17d9ff0e08a19b956e26") }) @@ -29,3 +29,42 @@ if (requireNamespace("Hmisc", quietly = TRUE)) { }) } + +if (requireNamespace("readr", quietly = TRUE)) { + + context("Compatibility with readr") + + metadata <- readr::read_csv( + get_data_location( + "ExampleProject_DataDictionary_2018-06-07.csv" + ) + ) + + records <- readr::read_csv( + get_data_location( + "ExampleProject_DATA_2018-06-07_1129.csv" + ) + ) + + redcap_output_readr <- REDCap_split(records, metadata) + + expect_matching_elements <- function(FUN) { + FUN <- match.fun(FUN) + expect_identical( + lapply(redcap_output_readr, FUN), + lapply(redcap_output_csv1, FUN) + ) + } + + test_that("Result of data read in with `readr` will match result with `read.csv`", { + + # The list itself + expect_identical(length(redcap_output_readr), length(redcap_output_csv1)) + expect_identical(names(redcap_output_readr), names(redcap_output_csv1)) + + # Each element of the list + expect_matching_elements(names) + expect_matching_elements(dim) + }) + +} diff --git a/R/tests/testthat/test-readr.R b/R/tests/testthat/test-readr.R deleted file mode 100644 index 1781eb5..0000000 --- a/R/tests/testthat/test-readr.R +++ /dev/null @@ -1,22 +0,0 @@ -if (requireNamespace("readr", quietly = TRUE)) { - - context("Compatibility with readr") - - metadata <- readr::read_csv( - get_data_location( - "ExampleProject_DataDictionary_2018-06-07.csv" - ) - ) - - records <- readr::read_csv( - get_data_location( - "ExampleProject_DATA_2018-06-07_1129.csv" - ) - ) - - test_that("Data read in with `readr` will return correct result", { - redcap_output_readr <- REDCap_split(records, metadata) - expect_known_hash(redcap_output_readr, "bde303d330fba161ca500c10cfabb693") - }) - -}