Nothing
test_that("dm_add_pk() works as intended?", {
expect_silent(
dm_test_obj() %>%
dm_add_pk(dm_table_1, a)
)
expect_silent(
dm_test_obj() %>%
dm_add_pk(dm_table_2, c)
)
expect_silent(expect_equivalent_dm(
dm_test_obj() %>%
dm_add_pk(dm_table_1, a) %>%
dm_add_pk(dm_table_1, b, force = TRUE),
dm_test_obj() %>%
dm_add_pk(dm_table_1, b)
))
expect_error(
dm_add_pk(dm_test_obj(), dm_table_1, qq),
class = "vctrs_error_subscript_oob"
)
expect_snapshot(error = TRUE, {
dm(x = tibble(x = integer())) %>%
dm_add_pk(x)
})
expect_dm_error(
dm_test_obj() %>%
dm_add_pk(dm_table_1, a) %>%
dm_add_pk(dm_table_1, b),
class = "key_set_force_false"
)
expect_dm_error(
dm_test_obj() %>%
dm_add_pk(dm_table_1, a) %>%
dm_add_pk(dm_table_1, a),
class = "key_set_force_false"
)
expect_dm_error(
dm_add_pk(dm_test_obj(), dm_table_2, c, check = TRUE),
class = "not_unique_key"
)
})
test_that("dm_rm_pk() works as intended?", {
expect_silent(
dm_test_obj() %>%
dm_add_pk(dm_table_1, a) %>%
dm_rm_pk(dm_table_1)
)
expect_dm_error(
dm_test_obj() %>%
dm_rm_pk(dm_table_1),
class = "pk_not_defined"
)
expect_dm_error(
dm_test_obj() %>%
dm_add_pk(dm_table_1, a) %>%
dm_rm_pk(dm_table_bogus),
class = "table_not_in_dm"
)
expect_deprecated(
expect_equivalent_dm(
dm_for_filter() %>%
dm_rm_pk(tf_4, fail_fk = TRUE),
dm_for_filter() %>%
dm_get_def() %>%
mutate(pks = if_else(table == "tf_4", list_of(new_pk()), pks)) %>%
dm_from_def()
),
"fail_fk"
)
# test if error is thrown if col not found
expect_dm_error(
dm_for_filter() %>%
dm_rm_pk(tf_5, x),
"pk_not_defined"
)
# test if error is thrown if any col not found
expect_dm_error(
dm_for_filter() %>%
dm_rm_pk(columns = x),
"pk_not_defined"
)
})
test_that("dm_rm_pk() supports partial filters", {
expect_snapshot({
# test logic if argument `fail_fk = FALSE`
dm_for_filter() %>%
dm_rm_pk(tf_4) %>%
get_all_keys()
dm_for_filter() %>%
dm_rm_pk(tf_3) %>%
get_all_keys()
# no failure if pk not used in relationship
dm_for_filter() %>%
dm_rm_pk(tf_6) %>%
get_all_keys()
# dprecated argument name
dm_for_filter() %>%
dm_rm_pk(tf_4, rm_referencing_fks = TRUE) %>%
get_all_keys()
# partial match for columns
dm_for_filter() %>%
dm_rm_pk(columns = c) %>%
get_all_keys()
# partial match for columns, with compound key
dm_for_filter() %>%
dm_rm_pk(columns = c(f, f1)) %>%
get_all_keys()
# partial match for all tables
dm_for_filter() %>%
dm_rm_pk(fail_fk = FALSE) %>%
get_all_keys()
})
})
test_that("dm_has_pk() works as intended?", {
expect_false(
dm_has_pk(dm_test_obj(), dm_table_2)
)
expect_true(
dm_test_obj() %>%
dm_add_pk(dm_table_1, a) %>%
dm_has_pk(dm_table_1)
)
})
test_that("dm_get_pk() works as intended?", {
local_options(lifecycle_verbosity = "quiet")
expect_identical(
dm_get_pk(dm_test_obj(), dm_table_1),
new_keys(character(0))
)
expect_identical(
dm_test_obj() %>%
dm_add_pk(dm_table_1, a) %>%
dm_get_pk(dm_table_1),
new_keys("a")
)
})
test_that("dm_enum_pk_candidates() works properly?", {
skip_if_ide()
expect_snapshot({
dm_enum_pk_candidates(dm_test_obj(), dm_table_1)
dm_enum_pk_candidates(dm_test_obj(), dm_table_2)
dm_enum_pk_candidates(dm_test_obj(), dm_table_5)
dm_enum_pk_candidates(dm_test_obj(), dm_table_6)
})
})
test_that("enum_pk_candidates() works properly", {
expect_silent(
expect_identical(
enum_pk_candidates(dm_zoomed()),
enum_pk_candidates(tf_2())
)
)
})
test_that("output", {
expect_snapshot(error = TRUE, {
dm(x = tibble(a = c(1, 1))) %>%
dm_add_pk(x, a, check = TRUE)
})
})
# all primary keys --------------------------------------------------------------------
test_that("dm_get_all_pks() and order", {
dm <- nyc_comp()
pks_all <- dm_get_all_pks(dm)
pks_12 <- dm_get_all_pks(dm, !!names(dm)[1:2])
pks_21 <- dm_get_all_pks(dm, !!names(dm)[2:1])
expect_equal(pks_all[1:2, ], pks_12)
expect_equal(pks_all[2:1, ], pks_21)
})
test_that("dm_get_all_pks() with table arg", {
expect_snapshot({
nyc_comp() %>%
dm_get_all_pks("weather")
nyc_comp() %>%
dm_get_all_pks(c(airlines, weather))
# test tidyselect functions for parent_table arg
nyc_comp() %>%
dm_get_all_pks(starts_with("weat"))
nyc_comp() %>%
dm_get_all_pks(matches("^a.*s$"))
})
})
test_that("dm_get_all_pks() with table arg fails nicely", {
skip_if(packageVersion("tidyselect") > "1.2.0")
expect_snapshot_error({
nyc_comp() %>%
dm_get_all_pks(c(airlines, weather, timetable, tabletime))
})
})
# tests for compound keys -------------------------------------------------
test_that("dm_get_all_pks() with compound keys", {
# FIXME: COMPOUND: Need proper test
skip_if_remote_src()
expect_snapshot({
nyc_comp()
nyc_comp() %>%
dm_get_all_pks()
})
})
# autoincrement -------------------------------------------------
x <- tibble(
x_id = integer(0),
z = integer(0),
x_data = character(0),
)
test_that("autoincrement fails with compound keys", {
expect_snapshot(error = TRUE, {
dm(x) %>%
dm_add_pk(x, columns = c(x_id, z), autoincrement = TRUE)
})
})
test_that("set autoincrement PK", {
expect_snapshot({
dm(x, y = x) %>%
dm_add_pk(x, columns = c(x_id), autoincrement = TRUE) %>%
dm_add_pk(y, columns = c(x_id, z)) %>%
dm_get_all_pks()
})
})
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.