Skip to content

Commit

Permalink
test image of first record
Browse files Browse the repository at this point in the history
ref #530
  • Loading branch information
wibeasley committed Sep 5, 2024
1 parent 5188104 commit 311897d
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 3 deletions.
7 changes: 4 additions & 3 deletions R/redcap-file-download-oneshot.R
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,10 @@
#' the name stored in REDCap is used (which is the default).
#'
#' @details
#' Currently, the function doesn't modify any variable types to conform to
#' REDCap's supported variables. See [validate_for_write()] for a helper
#' function that checks for some common important conflicts.
#' As of REDCap 14.6.4, for files in a repeating instrument,
#' you can't specify which repeating instance to download.
#' It always returns the file of the first instance
#' (within the record/patient).
#'
#' The function `redcap_download_file_oneshot()` is soft-deprecated
#' as of REDCapR 1.2.0.
Expand Down
Binary file added levon-and-barry.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 52 additions & 0 deletions tests/testthat/test-file-oneshot.R
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,58 @@ test_that("Full Directory Specific", {
expect_true(start_time <= info_actual$atime, label="The downloaded file's last access time should not precede this function's start time.")
})

test_that("file in repeating instrument", {
testthat::skip_on_cran()
credential_repeating <- retrieve_credential_testing(3181L)
on.exit(base::unlink(returned_object_1$file_name))

# start_time <- Sys.time() - lubridate::seconds(1) #Knock off a second in case there's small time imprecisions
start_time <- Sys.time() - 10 #Knock off ten seconds in case there are small time imprecisions.
path_of_expected_1_1 <- system.file("test-data/levon-and-barry.jpg", package="REDCapR")
# path_of_expected_1_2 <- system.file("test-data/mugshot-1.jpg", package="REDCapR")
path_of_expected_2_1 <- system.file("test-data/mugshot-2.jpg", package="REDCapR")
info_expected_1_1 <- file.info(path_of_expected_1_1)
info_expected_2_1 <- file.info(path_of_expected_2_1)
# record <- 1
field <- "image_profile"

expected_outcome_message <- '^(Preparing to download the file `.+\\.jpg`\\.|.+; name=".+\\.jpg" successfully downloaded in \\d+(\\.\\d+\\W|\\W)seconds\\, and saved as .+\\.jpg)'

# expected_outcome_message <- ".+"
suppressMessages({
returned_object_1 <-
redcap_file_download_oneshot(
record = 1L,
field = field,
redcap_uri = credential_repeating$redcap_uri,
token = credential_repeating$token,
verbose = TRUE
)
})

Sys.sleep(delay_after_download_file)
info_actual_1 <- file.info(returned_object_1$file_name)
expect_true(file.exists(returned_object_1$file_name), "The downloaded file should exist.")

#Test the values of the returned object.
expect_true(returned_object_1$success)
expect_equal(returned_object_1$status_code, expected=200L)
expect_match(returned_object_1$outcome_message, regexp=expected_outcome_message, perl=TRUE)
expect_equal(returned_object_1$records_affected_count, 1L)
expect_equal(returned_object_1$affected_ids, "1")
expect_true(returned_object_1$elapsed_seconds>0, "The `elapsed_seconds` should be a positive number.")
expect_equal(returned_object_1$raw_text, expected="", ignore_attr = TRUE) # dput(returned_object_1$raw_text)
expect_equal(returned_object_1$file_name, "levon-and-barry.jpg", label="The name of the downloaded file should be correct.")

#Test the values of the file.
expect_equal(info_actual_1$size, expected=info_expected_1_1$size, label="The size of the downloaded file should match.")
expect_false(info_actual_1$isdir, "The downloaded file should not be a directory.")
# expect_equal(as.character(info_actual$mode), expected=as.character(info_expected$mode), label="The mode/permissions of the downloaded file should match.")
expect_true(start_time <= info_actual_1$mtime, label="The downloaded file's modification time should not precede this function's start time.")
expect_true(start_time <= info_actual_1$ctime, label="The downloaded file's last change time should not precede this function's start time.")
expect_true(start_time <= info_actual_1$atime, label="The downloaded file's last access time should not precede this function's start time.")
})

test_that("download file conflict -Error", {
testthat::skip_on_cran()
on.exit(base::unlink(returned_object_1$file_name))
Expand Down

0 comments on commit 311897d

Please sign in to comment.