test_that("check_package_version warns when version is not compatible", {
  skip_if_not_installed("mockery")
  mockery::stub(
    check_package_version,
    "utils::packageVersion",
    numeric_version("1.2.3")
  )

  # When no version requirements are specified, checking package always succeeds
  expect_true(check_package_version("fakePackage"))

  # Warns when a minimum version isn't met
  expect_warning(
    check_package_version("fakePackage", c("10", NA)),
    "fakePackage"
  )

  # Warns when a maximum version isn't met
  expect_warning(
    check_package_version("fakePackage", c(NA, "1")),
    "fakePackage"
  )
})

test_that("register_on_load sets an onLoad hook when package is not yet loaded", {
  expect_silent(register_on_load("fakePackage", callback = function() NULL))
  expect_true(!is.null(getHook(packageEvent("fakePackage", "onLoad"))))
})

test_that("check_package_version rejects numeric version input", {
  expect_error(
    check_package_version("fakePackage", c(1, 2)),
    "Must be of type 'character'"
  )
})
