test_that("check_key works", {
  expect_identical(check_key(data.frame()), data.frame())
  expect_invisible(check_key(data.frame()))
  expect_invisible(check_key(data.frame(x = 1)))
  expect_invisible(check_key(data.frame(x = 1), "x"))
  expect_invisible(check_key(data.frame(x = c(1, 1), y = 1:2), c("y", "x")))
  expect_invisible(check_key(data.frame(x = c(1, 1), y = c(NA, 1)), c("y", "x")))
  expect_invisible(check_key(data.frame(x = c(1, 1), y = NA), c("y", "x"), na_distinct = TRUE))
})

test_that("check_key fails", {
  x <- data.frame(x = c(1, 2), y = c(1, 1), z = NA)
  expect_chk_error(
    check_key(x, c("y", "y")),
    "`key` must be unique[.]$"
  )
  expect_chk_error(
    check_key(x, "y"),
    "^Column 'y' in `x` must be a unique key[.]$"
  )
  expect_chk_error(
    check_key(x, c("y", "z")),
    "^Columns 'y' and 'z' in `x` must be a unique key[.]$"
  )
})
