context("lightswitch functions")
test_that("default options set as expected", {
expect_false(light_switch$turned_off)
expect_false(light_switch$ignore_cassettes)
})
test_that("turn_on & turned_on", {
expect_true(turned_on())
expect_false(light_switch$turned_off)
expect_false(turn_on())
expect_false(light_switch$turned_off)
expect_true(turned_on())
})
test_that("turn_off", {
expect_true(turned_on())
expect_false(light_switch$turned_off)
expect_true(suppressMessages(turn_off()))
expect_message(turn_off(), "vcr turned off")
expect_true(light_switch$turned_off)
expect_false(turned_on())
})
# turn back on
turn_on()
vcr_configure(warn_on_empty_cassette = FALSE)
test_that("turn_off and ignore_cassettes works correctly", {
# before turned off, insert_cassette works
z <- insert_cassette("abcd")
expect_is(z, "Cassette")
z$eject()
# after being turned off, insert_cassette throws an error
turn_off()
expect_error(insert_cassette("abcd"), "vcr is turned off")
# after being turned off && ignore_cassettes=TRUE:
# - insert_cassette returns `NULL`
# - use_cassette returns `NULL` & block is run
# - current_cassette returns `list()`
turn_off(ignore_cassettes = TRUE)
expect_null(insert_cassette("abcd"))
uc <- use_cassette("abcd", {
yielded <- 5
})
expect_null(uc)
expect_equal(yielded, 5)
expect_equal(length(current_cassette()), 0)
})
# cleanup
unlink(file.path(vcr_configuration()$dir, "abcd.yml"))
# turn back on
turn_on()
test_that("lightswitch env var's", {
# VCR_TURN_OFF not set, insert_cassette works
expect_equal(Sys.getenv("VCR_TURN_OFF"), "")
z <- insert_cassette("abcd")
expect_is(z, "Cassette")
invisible(z$eject())
# after being turned off, insert_cassette throws an error
Sys.setenv(VCR_TURNED_OFF=TRUE)
Sys.setenv(VCR_IGNORE_CASSETTES=FALSE)
expect_equal(Sys.getenv("VCR_TURN_OFF"), "")
expect_equal(Sys.getenv("VCR_IGNORE_CASSETTES"), "FALSE")
expect_equal(Sys.getenv("VCR_TURNED_OFF"), "TRUE")
expect_error(insert_cassette("defg"), "vcr is turned off")
# after both VCR_TURN_OFF && VCR_IGNORE_CASSETTES set to TRUE:
# - insert_cassette returns `NULL`
# - use_cassette returns `NULL` & block is run
# - current_cassette returns `list()`
Sys.setenv(VCR_TURN_OFF=FALSE)
Sys.setenv(VCR_TURNED_OFF=TRUE)
Sys.setenv(VCR_IGNORE_CASSETTES=TRUE)
expect_null(insert_cassette("asdffd"))
uc <- use_cassette("asdffdddd", {
yielded <- 55
})
expect_null(uc)
expect_equal(yielded, 55)
expect_equal(length(current_cassette()), 0)
})
# reset lightswitch env vars
Sys.setenv(VCR_TURN_OFF="")
Sys.setenv(VCR_TURNED_OFF="")
Sys.setenv(VCR_IGNORE_CASSETTES="")
test_that("lightswitch env var handling fails well", {
# various problems
Sys.setenv(VCR_TURN_OFF=4)
expect_error(vcr_env_handle(), "invalid option for env var")
Sys.setenv(VCR_TURN_OFF="4")
expect_error(vcr_env_handle(), "invalid option for env var")
Sys.setenv(VCR_TURN_OFF="adfasdfsfd")
expect_error(vcr_env_handle(), "invalid option for env var")
# different boolean forms work
Sys.setenv(VCR_TURN_OFF="true")
expect_null(vcr_env_handle())
Sys.setenv(VCR_TURN_OFF="FALSE")
expect_null(vcr_env_handle())
Sys.setenv(VCR_TURN_OFF=TRUE)
expect_null(vcr_env_handle())
})
# cleanup
unlink(file.path(vcr_configuration()$dir, "defg.yml"))
unlink(file.path(vcr_configuration()$dir, "asdffd.yml"))
unlink(file.path(vcr_configuration()$dir, "asdffdddd.yml"))
unlink(file.path(vcr_configuration()$dir, "abcd.yml"))
# reset lightswitch env vars
Sys.setenv(VCR_TURN_OFF="")
Sys.setenv(VCR_TURNED_OFF="")
Sys.setenv(VCR_IGNORE_CASSETTES="")
test_that("turned_off", {
turn_on()
# if a cassette is in use
mycas <- insert_cassette("adfadfdfadfadsf")
expect_error(turned_off(5 + 5), "You must eject it")
mycas$eject()
# no cassette in use
expect_true(turned_on())
suppressMessages(turned_off({
beetle <- crul::HttpClient$new(url = hb("/get"))$get()
}))
expect_is(beetle, "HttpResponse")
expect_true(turned_on())
})
# cleanup
# eject_cassette()
unlink(file.path(vcr_configuration()$dir, "adfadfdfadfadsf.yml"))
# reset configuration
vcr_configure_reset()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.