This vignette is for EDIutils
maintainers and
developers.
Some tests require authentication and a minimal data package for
evaluation and upload. This vignette demonstrates how to create and run
these tests with testthat
.
Request accounts via info@edirepository.org
The EDI repository “staging” environment is a sandbox for testing data package rendering, etc. Do not use the “production” environment for testing. The “production” environment is where publication quality data are released.
The first line of any test requiring authentication should include
skip_if_logged_out()
. This is an internal use only function
located in R/utilities.R. Tests including this line will be skipped
unless the R environment variable EDI_TOKEN
is set. Use
login()
to set this variable.
Example:
context("Create journal citation")
testthat::test_that("Test attributes of returned object", {
skip_if_logged_out()
journalCitationId <- create_journal_citation(
packageId = get_test_package(),
articleDoi = "10.1890/11-1026.1",
articleUrl = "https://doi.org/10.1890/11-1026.1",
articleTitle = "Corridors promote fire via connectivity and edge effects",
journalTitle = "Ecological Applications",
relationType = "IsCitedBy",
env = "staging")
expect_type(journalCitationId, "double")
res <- delete_journal_citation(journalCitationId, env = "staging")
expect_true(res)
})
If evaluation or upload of a data package is required by the test,
then include a second line skip_if_missing_eml_config()
.
Tests including this line will be skipped unless the R environment
variables EDI_USERID
and EDI_TEST_URL
are set.
Use config_test_eml()
to set these variables.
To set up the minimal test data package:
Copy the test data object at inst/extdata/data.txt to a web accessible location. The EDI repository will download this data object by it’s URL. The URL cannot present any redirects or else the EDI repository will not have access.
Add create_test_eml()
to create an EML metadata file
within the context of the test. Data packages require unique identifiers
that often change from test to test.
Example:
context("Evaluate data package")
testthat::test_that("Test attributes of returned object", {
skip_if_logged_out()
skip_if_missing_eml_config()
# Create data package for evaluation
identifier <- create_reservation(scope = "edi", env = "staging")
packageId <- paste0("edi.", identifier, ".1")
eml <- create_test_eml(path = tempdir(), packageId = packageId)
on.exit(file.remove(eml), add = TRUE, after = FALSE)
# Evaluate
transaction <- evaluate_data_package(eml, env = "staging")
res <- check_status_evaluate(transaction, env = "staging")
expect_true(res)
# Read evaluation report
report <- read_evaluate_report(transaction, env = "staging")
expect_true("xml_document" %in% class(report))
delete_reservation("edi", identifier, env = "staging")
})
Authenticate with login()
Configure test data package with
config_test_eml()
Run test suite devtools::test()