tests/testthat/test-RunAnalyses.R

library(testthat)

test_that("multiple analyses", {
  # Analysis.R is checked elsewhere
  exposureOutcome1 <- createExposureOutcome(701322, 28060)
  exposureOutcome2 <- createExposureOutcome(715997, 4294548)
  exposureOutcome3 <- createExposureOutcome(701322, 4043241)
  exposureOutcomeList <- list(exposureOutcome1, exposureOutcome2, exposureOutcome3)

  runSelfControlledCohortArgs1 <- createRunSelfControlledCohortArgs(firstExposureOnly = FALSE, computeTarDistribution = TRUE)
  runSelfControlledCohortArgs2 <- createRunSelfControlledCohortArgs(firstExposureOnly = TRUE)
  sccAnalysis1 <- createSccAnalysis(analysisId = 1,
                                    runSelfControlledCohortArgs = runSelfControlledCohortArgs1)
  sccAnalysis2 <- createSccAnalysis(analysisId = 2,
                                    runSelfControlledCohortArgs = runSelfControlledCohortArgs2)
  sccAnalysisList <- list(sccAnalysis1, sccAnalysis2)

  withr::with_tempfile("outputFolder", {
    rr <- runSccAnalyses(connectionDetails = connectionDetails,
                         cdmDatabaseSchema = cdmDatabaseSchema,
                         sccAnalysisList = sccAnalysisList,
                         exposureOutcomeList = exposureOutcomeList,
                         outputFolder = outputFolder,
                         computeThreads = 1)

    expect_s3_class(rr, "data.frame")
    expect_true(file.exists(file.path(outputFolder, "resultsReference.rds")))
    apply(rr, 1, function(item) {
      expect_true(file.exists(file.path(outputFolder, item["sccResultsFile"])))
    })

    result <- summarizeAnalyses(rr, outputFolder)
    expect_s3_class(result, "data.frame")
    expect_equal(ncol(result), 15)
  })
})

test_that("Fail on analyses clone", {
  withr::with_tempfile("outputFolder", {
    exposureOutcome1 <- createExposureOutcome(767410, 444382)
    exposureOutcome2 <- createExposureOutcome(1314924, 444382)
    exposureOutcome3 <- createExposureOutcome(907879, 444382)
    exposureOutcomeList <- list(exposureOutcome1, exposureOutcome2, exposureOutcome3)

    runSelfControlledCohortArgs <- createRunSelfControlledCohortArgs(firstExposureOnly = FALSE)
    sccAnalysis <- createSccAnalysis(analysisId = 1,
                                     runSelfControlledCohortArgs = runSelfControlledCohortArgs)

    sccAnalysisList <- list(sccAnalysis, sccAnalysis)
    expect_error(runSccAnalyses(connectionDetails = connectionDetails,
                                cdmDatabaseSchema = cdmDatabaseSchema,
                                sccAnalysisList = sccAnalysisList,
                                exposureOutcomeList = exposureOutcomeList,
                                outputFolder = outputFolder,
                                computeThreads = 8))
  })
})
OHDSI/SelfControlledCohort documentation built on Feb. 22, 2023, 5:44 p.m.