tests/testthat/test-flipswitch.R

context("flipswitch (enable/disable)")

test_that("flipswitch in default state", {
  expect_is(webmockr_lightswitch, "environment")
  expect_is(webmockr_lightswitch$crul, "logical")
  expect_false(webmockr_lightswitch$crul)
})

test_that("flipswitch - turn on with 'enable'", {
  skip_if_not_installed("httr")
  skip_if_not_installed("httr2")

  aa <- enable()

  expect_is(aa, "logical")
  expect_equal(length(aa), 3)
  expect_true(all(aa))

  expect_true(webmockr_lightswitch$crul)
  skip_if_not_installed("httr")
  expect_true(webmockr_lightswitch$httr)
  skip_if_not_installed("httr2")
  expect_true(webmockr_lightswitch$httr2)
})

test_that("flipswitch - turn on with 'enable' - one pkg", {
  # disable all
  disable()

  # enable one pkg
  aa <- enable("crul")

  expect_is(aa, "logical")
  expect_equal(length(aa), 1)
  expect_true(aa)

  expect_true(webmockr_lightswitch$crul)
  skip_if_not_installed("httr")
  expect_false(webmockr_lightswitch$httr)
  skip_if_not_installed("httr2")
  expect_false(webmockr_lightswitch$httr2)
})

test_that("flipswitch - turn off with 'disable'", {
  aa <- disable()

  # all are FALSE
  expect_true(!all(aa))

  expect_false(webmockr_lightswitch$crul)
  skip_if_not_installed("httr")
  expect_false(webmockr_lightswitch$httr)
  skip_if_not_installed("httr2")
  expect_false(webmockr_lightswitch$httr2)
})

test_that("enable and disable fail well", {
  expect_error(enable(wasp = 5), "unused argument")
  expect_error(disable(bee = 5), "unused argument")

  expect_error(
    enable(adapter = "stuff"),
    "adapter must be one of"
  )
  expect_error(
    disable(adapter = "stuff"),
    "adapter must be one of"
  )

  # FIXME: not sure how to test when pkg not installed
  #   inside of test suite
})

test_that("enabled works", {
  # disable all
  disable()

  expect_false(enabled())
  expect_false(enabled("crul"))
  expect_false(enabled("httr"))
  expect_false(enabled("httr2"))

  expect_error(enabled("foobar"), "'adapter' must be in the set")
})
ropensci/webmockr documentation built on June 14, 2025, 1:24 p.m.