R/functions_for_tests.R

Defines functions create_test_data_base drop_test_data_base check_docker

create_test_data_base <- function(json) {
    json <- jsonlite::fromJSON(json)
    dbname <- json$source_dbname
    host <- json$host
    port <- json$port
    user <- json$user
    password <- json$password

    drv <- DBI::dbDriver("PostgreSQL")
    connection <- RPostgreSQL::dbConnect(
        drv,
        dbname = dbname,
        host = host,
        port = port,
        user = user,
        password = password
    )
    query <-
        paste0("CREATE DATABASE test_data_base WITH TEMPLATE ", dbname, ";")
    RPostgreSQL::dbGetQuery(connection, query)
    RPostgreSQL::dbDisconnect(connection)
    DBI::dbUnloadDriver(drv)
}

drop_test_data_base <- function(json) {
    json <- jsonlite::fromJSON(json)
    dbname <- json$source_dbname
    host <- json$host
    port <- json$port
    user <- json$user
    password <- json$password

    drv <- DBI::dbDriver("PostgreSQL")
    connection <- RPostgreSQL::dbConnect(
        drv,
        dbname = dbname,
        host = host,
        port = port,
        user = user,
        password = password
    )
    query <- "DROP DATABASE IF EXISTS test_data_base;"
    RPostgreSQL::dbGetQuery(connection, query)
    RPostgreSQL::dbDisconnect(connection)
    DBI::dbUnloadDriver(drv)
}

check_docker <- function() {
    container_list <- try(system("docker ps", intern = T), silent = T)
    first_word_from_ps <- substring(container_list, 0, 12)
    KAROLA_container_id <-
        try(system("docker ps -q -f name=KarolaTestDatabase", intern = T),
            silent = T)
    if (first_word_from_ps[1] != "CONTAINER ID") {
        testthat::skip("docker not available")
    } else if (length(KAROLA_container_id) == 0) {
        testthat::skip("postgers database not available")
    }
}
darsoo/KAROLA documentation built on May 14, 2019, 8:42 a.m.