test_that("Id() requires a character vector", {
  expect_snapshot(Id(1), error = TRUE)
})

test_that("has a decent print method", {
  expect_snapshot(Id("a", "b"))
})

test_that("each element is quoted individually", {
  expect_equal(
    DBI::dbQuoteIdentifier(ANSI(), Id("a", "b.c")),
    SQL('"a"."b.c"')
  )
})

test_that("Id organizes the standard named elements", {
  expect_equal(
    dbQuoteIdentifier(
      ANSI(),
      Id(
        "unnamed",
        column = "ultimate",
        table = "last",
        schema = "3rd",
        cluster = '1st',
        catalog = "2nd"
      )
    ),
    SQL('"1st"."2nd"."3rd"."unnamed"."last"."ultimate"')
  )
})

test_that("Id organizes mingled named and unnamed elements; ignores NULL", {
  expect_equal(
    dbQuoteIdentifier(
      ANSI(),
      Id(table = "4", some_ref = "2", "3", catalog = "1", cluster = NULL)
    ),
    SQL('"1"."2"."3"."4"')
  )
})
