context("testing cr_cn")
test_that("cr_cn citeproc-json", {
vcr::use_cassette("cr_cn_citeproc_json", {
b <- cr_cn(dois = "10.1126/science.169.3946.635", format = "citeproc-json")
expect_is(b, "list")
expect_match(b$`container-title`, "Science")
})
})
test_that("cr_cn bibtex", {
skip_if_not_installed("bibtex")
vcr::use_cassette("cr_cn_bibentry", {
e <- cr_cn("10.1126/science.169.3946.635", "bibentry")
expect_is(e, "list")
expect_match(e$year, "1970")
}, match_requests_on = c("method"))
})
test_that("cr_cn xml types", {
vcr::use_cassette("cr_cn_xml_types", {
c <- cr_cn("10.1126/science.169.3946.635", "rdf-xml")
expect_is(c, "xml_document")
d <- cr_cn("10.1126/science.169.3946.635", "crossref-xml")
expect_is(d, "xml_document")
h <- cr_cn("10.1430/8105", "onix-xml")
expect_is(h, "xml_document")
}, preserve_exact_body_bytes = TRUE,
match_requests_on = c("method")
)
})
test_that("cr_cn fails correctly", {
vcr::use_cassette("cr_cn_fails_well", {
expect_error(cr_cn(dois="10.1126/science.169.3946.635", timeout_ms = 1))
})
})
test_that("DOIs with no agency found still work, at least some do", {
vcr::use_cassette("cr_cn_no_agency_still_work", {
# throws warning
# no warning thrown any longer
# expect_warning(
# cr_cn("10.1890/0012-9615(1999)069[0569:EDILSA]2.0.CO;2"),
# "agency not found - proceeding with 'crossref'"
# )
# but it is successful
expect_is(
suppressWarnings(cr_cn("10.1890/0012-9615(1999)069[0569:EDILSA]2.0.CO;2")),
"character"
)
}, match_requests_on = c("method"))
})
test_that("cr_cn checks if doi agency supports format", {
vcr::use_cassette("cr_cn_doi_agency_check", {
expect_error(
cr_cn(dois = "10.1430/8105", format = "crossref-tdm"),
"not supported by the DOI registration agency: 'medra'"
)
# expect_error(
# cr_cn("10.4225/55/5568087BB3A88", "citeproc-json"),
# "not supported by the DOI registration agency: 'datacite'"
# )
expect_error(
cr_cn("10.1126/science.169.3946.635", "onix-xml"),
"not supported by the DOI registration agency: 'crossref'"
)
})
})
test_that("cr_cn works with different URLs", {
vcr::use_cassette("cr_cn_different_base_urls", {
expect_match(
cr_cn("10.1126/science.169.3946.635", "text", url = "http://dx.doi.org"),
"Frank"
)
expect_match(
cr_cn("10.5284/1011335", url = "https://citation.crosscite.org/format"),
"Archaeology"
)
}, preserve_exact_body_bytes = TRUE, match_requests_on = c("method"))
})
test_that("cr_cn cache works", {
vcr::use_cassette("cr_cn_cache", {
# reset cache
rm(list = ls(cr_cache_env), envir = cr_cache_env)
t1 <- system.time(b1 <- cr_cn(dois = "10.1126/science.169.3946.635", format = "citeproc-json", cache = TRUE))
t2 <- system.time(b2 <- cr_cn(dois = "10.1126/science.169.3946.635", format = "citeproc-json", cache = TRUE))
# compare timing to ensure that caching actually happened
expect_gt(t1[3], t2[3])
expect_identical(b1, b2)
expect_is(b1, "list")
expect_match(b1$`container-title`, "Science")
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.