Nothing
test_that("get_tables() works without pattern", {
for (conn in get_test_conns()) {
# Check for the existence of "test.mtcars" and "__mtcars" (added during test setup)
# For SQLite connections, we don't always have the "test" schema, so we check for its existence
# and use default schema if it does not exist.
table_1 <- paste(c(switch(!schema_exists(conn, "test"), get_schema(conn)), "test.mtcars"), collapse = ".")
table_2 <- paste(c(get_schema(conn), "__mtcars"), collapse = ".")
# Check for the existence of views on backends that support it (added here)
if (inherits(conn, "PqConnection")) {
DBI::dbExecute(conn, "CREATE VIEW __mtcars_view AS SELECT * FROM __mtcars LIMIT 10")
view_1 <- paste(c(get_schema(conn), "__mtcars_view"), collapse = ".")
} else if (inherits(conn, "Microsoft SQL Server")) {
DBI::dbExecute(conn, "CREATE VIEW __mtcars_view AS SELECT TOP 10 * FROM __mtcars")
view_1 <- paste(c(get_schema(conn), "__mtcars_view"), collapse = ".")
} else {
view_1 <- NULL
}
# Pull the tables and compare with expectation
tables <- get_tables(conn)
expect_s3_class(tables, "data.frame")
db_table_names <- tables |>
tidyr::unite("db_table_name", "schema", "table", sep = ".", na.rm = TRUE) |>
dplyr::pull(db_table_name)
# We should not get tables twice
expect_setequal(db_table_names, unique(db_table_names))
# Our test tables should be present
checkmate::expect_subset(c(table_1, table_2, view_1), db_table_names)
# Drop the view
if (checkmate::test_multi_class(conn, c("PqConnection", "Microsoft SQL Server"))) {
DBI::dbExecute(conn, glue::glue("DROP VIEW {view_1}"))
}
connection_clean_up(conn)
}
})
test_that("get_tables() works with pattern", {
for (conn in get_test_conns()) {
# Call with pattern
db_table_names <- get_tables(conn, pattern = "__mt") |>
tidyr::unite("db_table_name", "schema", "table", sep = ".", na.rm = TRUE) |>
dplyr::pull(db_table_name)
# We should not get tables twice
expect_setequal(db_table_names, unique(db_table_names))
# Check for the existence of "test.mtcars" and "__mtcars" (added during test setup)
# For SQLite connections, we don't always have the "test" schema, so we check for its existence
# and use default schema if it does not exist.
table_1 <- paste(c(switch(!schema_exists(conn, "test"), get_schema(conn)), "test.mtcars"), collapse = ".")
table_2 <- paste(c(get_schema(conn), "__mtcars"), collapse = ".")
# Our test table that matches the pattern should be present
expect_false(table_1 %in% db_table_names)
expect_true(table_2 %in% db_table_names)
connection_clean_up(conn)
}
})
test_that("get_tables() works with temporary tables", {
for (conn in get_test_conns()) {
# Create temporary table
tmp <- dplyr::copy_to(conn, mtcars, "__mtcars_2", temporary = TRUE)
tmp_id <- id(tmp)
tmp_name <- paste(tmp_id@name["schema"], tmp_id@name["table"], sep = ".")
db_table_names <- get_tables(conn, show_temporary = TRUE) |>
tidyr::unite("db_table_name", "schema", "table", sep = ".", na.rm = TRUE) |>
dplyr::pull(db_table_name)
# We should not get tables twice
expect_setequal(db_table_names, unique(db_table_names))
# Check for the existence of "test.mtcars" and "__mtcars" (added during test setup)
# For SQLite connections, we don't always have the "test" schema, so we check for its existence
# and use default schema if it does not exist.
table_1 <- paste(c(switch(!schema_exists(conn, "test"), get_schema(conn)), "test.mtcars"), collapse = ".")
table_2 <- paste(c(get_schema(conn), "__mtcars"), collapse = ".")
# Our test tables should be present
checkmate::expect_subset(c(table_1, table_2, tmp_name), db_table_names)
connection_clean_up(conn)
}
})
test_that("get_tables() works without temporary tables", {
for (conn in get_test_conns()) {
# Create temporary table
tmp <- dplyr::copy_to(conn, mtcars, "__mtcars_2", temporary = TRUE)
tmp_id <- id(tmp)
tmp_name <- paste(tmp_id@name["schema"], tmp_id@name["table"], sep = ".")
db_table_names <- get_tables(conn, show_temporary = FALSE) |>
tidyr::unite("db_table_name", "schema", "table", sep = ".", na.rm = TRUE) |>
dplyr::pull(db_table_name)
# Check for the existence of "test.mtcars" and "__mtcars" (added during test setup)
# For SQLite connections, we don't always have the "test" schema, so we check for its existence
# and use default schema if it does not exist.
table_1 <- paste(c(switch(!schema_exists(conn, "test"), get_schema(conn)), "test.mtcars"), collapse = ".")
table_2 <- paste(c(get_schema(conn), "__mtcars"), collapse = ".")
# Our permanent test tables should be present
checkmate::expect_subset(c(table_1, table_2), db_table_names)
# But not our temporary tables
checkmate::expect_disjunct(tmp_name, db_table_names)
connection_clean_up(conn)
}
})
test_that("get_tables() matches the pattern of SCDB::id", {
for (conn in get_test_conns()) {
# Test for both a permanent table and a temporary table
permanent_table <- id("test.mtcars", conn = conn)
tmp <- dplyr::copy_to(conn, mtcars, "__mtcars_2", temporary = TRUE)
defer_db_cleanup(tmp)
temporary_table <- id(tmp)
# Check tables can be found by get_tables with pattern
expect_identical(nrow(get_tables(conn, pattern = paste0("^", as.character(permanent_table)))), 1L)
expect_identical(id(get_tables(conn, pattern = paste0("^", as.character(permanent_table)))), permanent_table)
expect_identical(nrow(get_tables(conn, pattern = paste0("^", as.character(temporary_table)))), 1L)
expect_identical(id(get_tables(conn, pattern = paste0("^", as.character(temporary_table)))), temporary_table)
connection_clean_up(conn)
}
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.