# Tests for R/copyCdmTo.R # Extra tests only run in test-coverage and local; skip on container CI skip_on_cran() skip_if(nzchar(Sys.getenv("CI_TEST_DB")), "Skipping extra tests on container CI") test_that("copyCdmTo copies cdm to another duckdb connection", { skip_if_not_installed("duckdb") con1 <- local_eunomia_con() con2 <- DBI::dbConnect(duckdb::duckdb(), ":memory:") on.exit(DBI::dbDisconnect(con2, shutdown = TRUE), add = TRUE) cdm <- cdmFromCon(con1, cdmSchema = "main", writeSchema = "main", cdmName = "eunomia") newCdm <- copyCdmTo(con2, cdm, schema = c(schema = "main"), overwrite = TRUE) expect_s3_class(newCdm, "cdm_reference") expect_true("person" %in% names(newCdm)) expect_true("observation_period" %in% names(newCdm)) # Check data was actually copied person_count <- newCdm$person %>% dplyr::count() %>% dplyr::pull(n) expect_true(person_count > 0) }) test_that("copyCdmTo preserves cdm name", { skip_if_not_installed("duckdb") con1 <- local_eunomia_con() con2 <- DBI::dbConnect(duckdb::duckdb(), ":memory:") on.exit(DBI::dbDisconnect(con2, shutdown = TRUE), add = TRUE) cdm <- cdmFromCon(con1, cdmSchema = "main", writeSchema = "main", cdmName = "TestCDM") newCdm <- copyCdmTo(con2, cdm, schema = c(schema = "main"), overwrite = TRUE) expect_equal(omopgenerics::cdmName(newCdm), "TestCDM") }) test_that("copyCdmTo errors on invalid connection", { skip_if_not_installed("duckdb") con1 <- local_eunomia_con() con2 <- DBI::dbConnect(duckdb::duckdb(), ":memory:") DBI::dbDisconnect(con2, shutdown = TRUE) cdm <- cdmFromCon(con1, cdmSchema = "main", writeSchema = "main", cdmName = "eunomia") expect_error(copyCdmTo(con2, cdm, schema = c(schema = "main"))) }) test_that("copyCdmTo copies cohort tables", { skip_if_not_installed("duckdb") con1 <- local_eunomia_con() con2 <- DBI::dbConnect(duckdb::duckdb(), ":memory:") on.exit(DBI::dbDisconnect(con2, shutdown = TRUE), add = TRUE) cdm <- cdmFromCon(con1, cdmSchema = "main", writeSchema = "main", cdmName = "eunomia") cohort_set <- readCohortSet(system.file("cohorts1", package = "CDMConnector")) cdm <- generateCohortSet(cdm, cohort_set, name = "my_cohort", overwrite = TRUE) newCdm <- copyCdmTo(con2, cdm, schema = c(schema = "main"), overwrite = TRUE) expect_true("my_cohort" %in% names(newCdm)) cohort_data <- newCdm$my_cohort %>% dplyr::collect() expect_true(nrow(cohort_data) >= 0) })