test_that("HTTPInteractionList", {
crul::mock(FALSE)
url <- hb("/post")
url2 <- hb("/get")
url3 <- "https://scottchamberlain.info"
body <- list(foo = "bar")
cli <- crul::HttpClient$new(url = url)
res <- cli$post(body = body)
cli2 <- crul::HttpClient$new(url = url2)
res2 <- cli2$get(body = body)
res3 <- crul::HttpClient$new(url = url3)$get()
# requests
request <- Request$new("POST", uri = url,
body = body, headers = res$response_headers)
request2 <- Request$new("GET", uri = url2,
body = body, headers = res2$response_headers)
request3 <- Request$new("GET", uri = url3,
headers = res3$response_headers)
# response
response <- VcrResponse$new(res$status_http(), res$response_headers,
res$parse("UTF-8"), res$response_headers$status)
response2 <- VcrResponse$new(res2$status_http(), res2$response_headers,
res2$parse("UTF-8"), res2$response_headers$status)
# make HTTPInteraction object
inter <- HTTPInteraction$new(request = request, response = response)
inter2 <- HTTPInteraction$new(request = request2, response = response2)
# make HTTPInteractionList object
x <- suppressMessages(HTTPInteractionList$new(
interactions = list(inter, inter2),
request_matchers = vcr_configuration()$match_requests_on
))
# objects and methods
expect_is(x$request_matchers, "character")
expect_equal(x$request_matchers, c('method', 'uri'))
## parent list
expect_is(x$parent_list, "NullList")
expect_null(x$parent_list$response_for())
expect_false(x$parent_list$has_interaction_matching())
expect_false(x$parent_list$has_used_interaction_matching())
expect_equal(x$parent_list$remaining_unused_interaction_count(), 0)
expect_is(x$used_interactions, "list")
expect_false(x$allow_playback_repeats)
expect_is(x$interactions, "list")
expect_is(x$interactions[[1]], "HTTPInteraction")
expect_is(x$response_for, "function")
expect_is(suppressWarnings(x$response_for(request)), "VcrResponse")
# private methods
### need to remake the HTTPInteractionList object b/c response_for alters it
x <- suppressMessages(HTTPInteractionList$new(
interactions = list(inter, inter2),
request_matchers = vcr_configuration()$match_requests_on
))
priv <- x$.__enclos_env__$private
## has_unused_interactions
expect_true(priv$has_unused_interactions())
x$response_for(request) # request used
x$response_for(request2) # request2 used
expect_false(priv$has_unused_interactions())
# remake after response_for use
x <- suppressMessages(HTTPInteractionList$new(
interactions = list(inter, inter2),
request_matchers = vcr_configuration()$match_requests_on
))
priv <- x$.__enclos_env__$private
## matching_interaction_bool
expect_true(priv$matching_interaction_bool(request))
expect_true(priv$matching_interaction_bool(request2))
expect_false(priv$matching_interaction_bool(request3))
## matching_interaction_index
expect_equal(priv$matching_interaction_index(request), 1)
expect_equal(priv$matching_interaction_index(request2), 2)
expect_length(priv$matching_interaction_index(request3), 0)
## matching_used_interaction_for
### allow_playback_repeats=FALSE -> returns FALSE no matter what
expect_false(priv$matching_used_interaction_for(request))
### interaction_matches_request
expect_true(priv$interaction_matches_request(request, x$interactions[[1]]))
expect_false(priv$interaction_matches_request(request, x$interactions[[2]]))
expect_false(priv$interaction_matches_request(request2, x$interactions[[1]]))
expect_true(priv$interaction_matches_request(request2, x$interactions[[2]]))
### allow_playback_repeats=TRUE -> then we check the used interactions
x <- suppressMessages(HTTPInteractionList$new(
interactions = list(inter, inter2),
request_matchers = vcr_configuration()$match_requests_on,
allow_playback_repeats = TRUE
))
priv <- x$.__enclos_env__$private
expect_false(priv$matching_used_interaction_for(request))
x$response_for(request) # request used
expect_is(priv$matching_used_interaction_for(request),
"HTTPInteraction")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.