Skip to content

Commit

Permalink
verify record_id IS returned by redcap_read_oneshot()
Browse files Browse the repository at this point in the history
ref #471
  • Loading branch information
wibeasley committed Jul 11, 2023
1 parent cc6da98 commit ab4c58a
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
structure(list(record_id = c(1, 2, 3, 4, 5), name_first = c("Nutmeg",
"Tumtum", "Marcus", "Trudy", "John Lee"), address = c("14 Rose Cottage St.\nKenning UK, 323232",
"14 Rose Cottage Blvd.\nKenning UK 34243", "243 Hill St.\nGuthrie OK 73402",
"342 Elm\nDuncanville TX, 75116", "Hotel Suite\nNew Orleans LA, 70115"
), interpreter_needed = c(0, 0, 1, NA, 0)), row.names = c(NA,
-5L), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"))
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
structure(list(record_id = c(1, 2, 3, 4, 5), height = c(7, 6,
180, 165, 193.04), weight = c(1, 1, 80, 54, 104), bmi = c(204.1,
277.8, 24.7, 19.8, 27.9), comments = c("Character in a book, with some guessing",
"A mouse character from a good book", "completely made up", "This record doesn't have a DAG assigned\n\nSo call up Trudy on the telephone\nSend her a letter in the mail",
"Had a hand for trouble and a eye for cash\n\nHe had a gold watch chain and a black mustache"
), mugshot = c("mugshot-1.jpg", "mugshot-2.jpg", "mugshot-3.jpg",
"mugshot-4.jpg", "mugshot-5.jpg"), health_complete = c(1, 0,
2, 2, 0)), row.names = c(NA, -5L), class = c("spec_tbl_df", "tbl_df",
"tbl", "data.frame"))
96 changes: 96 additions & 0 deletions tests/testthat/test-read-batch-simple.R
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,102 @@ test_that("specify-forms-only-1st", {
expect_match(returned_object2$outcome_messages, regexp=expected_outcome_message, perl=TRUE)
expect_s3_class(returned_object2$data, "tbl")
})
test_that("specify-forms-without-record-id", {
testthat::skip_on_cran()
path_expected <- "test-data/specific-redcapr/read-batch-simple/specify-forms-without-record-id.R"
desired_forms <- c("health")
expected_outcome_message <- "\\d+ records and 7 columns were read from REDCap in \\d+(\\.\\d+\\W|\\W)seconds\\."

###########################
## Default Batch size
returned_object1 <-
redcap_read(
redcap_uri = credential$redcap_uri,
token = credential$token,
forms = desired_forms,
verbose = FALSE
)

if (update_expectation) save_expected(returned_object1$data, path_expected)
expected_data_frame <- retrieve_expected(path_expected)

expect_equal(returned_object1$data, expected=expected_data_frame, label="The returned data.frame should be correct", ignore_attr = TRUE) # dput(returned_object1$data)
expect_true(returned_object1$success)
expect_match(returned_object1$status_codes, regexp="200", perl=TRUE)
expect_true(returned_object1$records_collapsed=="", "A subset of records was not requested.")
expect_equal(returned_object1$fields_collapsed, "record_id")
expect_true(returned_object1$filter_logic=="", "A filter was not specified.")
expect_match(returned_object1$outcome_messages, regexp=expected_outcome_message, perl=TRUE)
expect_s3_class(returned_object1$data, "tbl")

###########################
## Tiny Batch size
returned_object2 <-
redcap_read(
redcap_uri = credential$redcap_uri,
token = credential$token,
forms = desired_forms,
batch_size = 2,
verbose = FALSE
)

expect_equal(returned_object2$data, expected=expected_data_frame, label="The returned data.frame should be correct", ignore_attr = TRUE) # dput(returned_object2$data)
expect_true(returned_object2$success)
expect_match(returned_object2$status_codes, regexp="200", perl=TRUE)
expect_true(returned_object2$records_collapsed=="", "A subset of records was not requested.")
expect_equal(returned_object2$fields_collapsed, "record_id")
expect_true(returned_object2$filter_logic=="", "A filter was not specified.")
expect_match(returned_object2$outcome_messages, regexp=expected_outcome_message, perl=TRUE)
expect_s3_class(returned_object2$data, "tbl")
})
test_that("specify-fields-without-record-id", {
testthat::skip_on_cran()
path_expected <- "test-data/specific-redcapr/read-batch-simple/specify-fields-without-record-id.R"
desired_fields <- c("name_first", "address", "interpreter_needed")
expected_outcome_message <- "\\d+ records and 4 columns were read from REDCap in \\d+(\\.\\d+\\W|\\W)seconds\\."

###########################
## Default Batch size
returned_object1 <-
redcap_read(
redcap_uri = credential$redcap_uri,
token = credential$token,
fields = desired_fields,
verbose = FALSE
)

if (update_expectation) save_expected(returned_object1$data, path_expected)
expected_data_frame <- retrieve_expected(path_expected)

expect_equal(returned_object1$data, expected=expected_data_frame, label="The returned data.frame should be correct", ignore_attr = TRUE) # dput(returned_object1$data)
expect_true(returned_object1$success)
expect_match(returned_object1$status_codes, regexp="200", perl=TRUE)
expect_true(returned_object1$records_collapsed=="", "A subset of records was not requested.")
expect_equal(returned_object1$fields_collapsed, paste0("record_id,", paste(desired_fields, collapse = ",")))
expect_true(returned_object1$filter_logic=="", "A filter was not specified.")
expect_match(returned_object1$outcome_messages, regexp=expected_outcome_message, perl=TRUE)
expect_s3_class(returned_object1$data, "tbl")

###########################
## Tiny Batch size
returned_object2 <-
redcap_read(
redcap_uri = credential$redcap_uri,
token = credential$token,
fields = desired_fields,
batch_size = 2,
verbose = FALSE
)

expect_equal(returned_object2$data, expected=expected_data_frame, label="The returned data.frame should be correct", ignore_attr = TRUE) # dput(returned_object2$data)
expect_true(returned_object2$success)
expect_match(returned_object2$status_codes, regexp="200", perl=TRUE)
expect_true(returned_object2$records_collapsed=="", "A subset of records was not requested.")
expect_equal(returned_object2$fields_collapsed, paste0("record_id,", paste(desired_fields, collapse = ",")))
expect_true(returned_object2$filter_logic=="", "A filter was not specified.")
expect_match(returned_object2$outcome_messages, regexp=expected_outcome_message, perl=TRUE)
expect_s3_class(returned_object2$data, "tbl")
})
test_that("raw", {
testthat::skip_on_cran()
path_expected <- "test-data/specific-redcapr/read-batch-simple/raw.R"
Expand Down

1 comment on commit ab4c58a

@wibeasley
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This commit message is wrong. It should be redcap_read(). Not redcap_read_oneshot().

Please sign in to comment.