tests/testthat/test-Table1.R

# This file covers the code in Table1.R. View coverage for this file using
# library(testthat); library(FeatureExtraction)
# covr::file_report(covr::file_coverage("R/Table1.R", "tests/testthat/test-Table1.R"))

connectionDetails <- Eunomia::getEunomiaConnectionDetails()
Eunomia::createCohorts(connectionDetails)

test_that("getDefaultTable1Specifications works", {
  spec <- getDefaultTable1Specifications()
  expect_s3_class(spec, "data.frame")
  expect_equal(names(spec), c("label", "analysisId", "covariateIds"))
})


test_that("createTable1 works with categorical covariates", {
  
  
  settings <- createCovariateSettings(useDemographicsAgeGroup = TRUE,
                                      useDemographicsGender = TRUE,
                                      useChads2Vasc = F)
                                           
  covariateData1 <- getDbCovariateData(connectionDetails = connectionDetails,
                                       cdmDatabaseSchema = "main",
                                       cohortDatabaseSchema = "main",
                                       cohortId = 1,
                                       covariateSettings = settings,
                                       aggregated = TRUE)
  
  expect_error(createTable1("blah"), "not of type 'covariateData'")
  expect_error(createTable1(covariateData1, output = "blah"), "The `output` argument  must be")
  expect_error(createTable1(covariateData1, showCounts = F, showPercent = F), "counts or percent")
  table1 <- createTable1(covariateData1, specifications = getDefaultTable1Specifications()[1:2,])
  expect_s3_class(table1, "data.frame")
  expect_equal(ncol(table1), 4)
  expect_equal(names(table1)[1], names(table1)[3])
  expect_equal(names(table1)[2], names(table1)[4])
  
  table1 <- createTable1(covariateData1, output = "one column")
  expect_s3_class(table1, "data.frame")
  expect_equal(ncol(table1), 2)
  
  
  
  covariateData2 <- getDbCovariateData(connectionDetails = connectionDetails,
                                      cdmDatabaseSchema = "main",
                                      cohortDatabaseSchema = "main",
                                      cohortId = 2,
                                      covariateSettings = settings,
                                      aggregated = TRUE)
  
  expect_error(createTable1(covariateData1, "blah"), "not of type 'covariateData'")
  table1 <- createTable1(covariateData1, covariateData2)
  expect_s3_class(table1, "data.frame")
  expect_equal(ncol(table1), 8)  
  
  table1 <- createTable1(covariateData1, covariateData2, output = "one column")
  expect_s3_class(table1, "data.frame")
  expect_equal(ncol(table1), 4)
  
  
  rawCovariateData <- getDbCovariateData(connectionDetails = connectionDetails,
                                       cdmDatabaseSchema = "main",
                                       cohortDatabaseSchema = "main",
                                       cohortId = 1,
                                       covariateSettings = settings,
                                       aggregated = FALSE)
  
  expect_error(createTable1(rawCovariateData), "data is not aggregated")
  expect_error(createTable1(covariateData1, rawCovariateData), "data is not aggregated")
  
})



test_that("createTable1 works with continuous covariates", {
  settings <- createCovariateSettings(useDemographicsAgeGroup = TRUE,
                                      useDemographicsGender = TRUE,
                                      useChads2Vasc = TRUE)
  
  covariateData1 <- getDbCovariateData(connectionDetails = connectionDetails,
                                       cdmDatabaseSchema = "main",
                                       cohortDatabaseSchema = "main",
                                       cohortId = 1,
                                       covariateSettings = settings,
                                       aggregated = TRUE)
  
  expect_error(createTable1(covariateData1), "cannot display the output in two columns")
 
  
  table1 <- createTable1(covariateData1, specifications = getDefaultTable1Specifications()[1:2,])
  expect_s3_class(table1, "data.frame")
  
  table1 <- createTable1(covariateData1, output = "one column")
  expect_s3_class(table1, "data.frame")
  
  
  covariateData2 <- getDbCovariateData(connectionDetails = connectionDetails,
                                       cdmDatabaseSchema = "main",
                                       cohortDatabaseSchema = "main",
                                       cohortId = 2,
                                       covariateSettings = settings,
                                       aggregated = TRUE)
  
  table1 <- createTable1(covariateData1, covariateData2, output = "one column", 
                         cohortId1 = 1, cohortId2 = 2,
                         showCounts = TRUE, showPercent = TRUE)
  expect_s3_class(table1, "data.frame")
  
  
  settings <- createCovariateSettings(useChads2Vasc = TRUE)
  
  covariateData3 <- getDbCovariateData(connectionDetails = connectionDetails,
                                       cdmDatabaseSchema = "main",
                                       cohortDatabaseSchema = "main",
                                       cohortId = 1,
                                       covariateSettings = settings,
                                       aggregated = TRUE)
  table1 <- createTable1(covariateData3, output = "one column", showCounts = T, showPercent = T)
  expect_s3_class(table1, "data.frame")
  
})


test_that("blah", {
  settings <- createCovariateSettings(useDemographicsAgeGroup = TRUE,
                                      useChads2Vasc = TRUE) 
  spec <- getDefaultTable1Specifications()
  spec <- spec[which(spec$label %in% c("CHADS2Vasc", "Age group")),]
  spec[1, "analysisId"] <- NA_integer_
  spec[2, "covariateIds"] <- NA_character_
  
  covariateData1 <- getDbCovariateData(connectionDetails = connectionDetails,
                                       cdmDatabaseSchema = "main",
                                       cohortDatabaseSchema = "main",
                                       cohortId = 1,
                                       covariateSettings = settings,
                                       aggregated = TRUE)
  
  table1 <- createTable1(covariateData1, specifications = spec, output = "list")
  expect_type(table1, "list")
})

test_that("createTable1CovariateSettings works", {
  covariateSettings <- createTable1CovariateSettings()
  expect_s3_class(covariateSettings, "covariateSettings")
})
quinterpriest/FeatureExtraction documentation built on April 20, 2022, 12:49 a.m.