context("Create report based on a template")
library(yaml)
library(rmarkdown)
library(haven)
# fix for pandoc warning: 'This document format requires a nonempty
element.'
outputOpts <- list(pandoc_args =
rmarkdown::pandoc_metadata_arg(name = "pagetitle", value = "test report")
)
test_that("The division template is successfully rendered", {
skip_if_not(
condition = rmarkdown::pandoc_available(),
message = "pandoc is not available"
)
dir <- tempfile("division")
dir.create(dir)
# get params from division config from available one in tests folder
testPathFiles <- normalizePath(path = "../files")
testPathConfig <- file.path(testPathFiles, "config")
configFile <- list.files(
path = testPathConfig,
pattern = "config-adverseEvents-division.yml",
full.names = TRUE
)
params <- read_yaml(configFile)
# run report
templateName <- "divisionTemplate.Rmd"
pathTemplate <- system.file("template", templateName,
package = "clinDataReview")
expect_error(
outputFile <- rmarkdown::render(
input = pathTemplate,
output_dir = dir,
intermediates_dir = dir,
quiet = TRUE,
output_options = outputOpts
),
NA
)
expect_true(file.exists(outputFile))
detach(params);rm(params)
})
test_that("The listing template is successfully rendered", {
skip_on_cran()
dir <- tempfile("listing")
dir.create(dir)
templateName <- "listingTemplate.Rmd"
# create example data
dataEX <- data.frame(
"USUBJID" = c(1, 1, 2, 3, 4),
"EXDOSE" = "100",
stringsAsFactors = FALSE
)
write_xpt(dataEX, file.path(dir, "adex.xpt"))
# set parameters
params <- list(
pathDataFolder = dir,
template = templateName,
templatePackage = "clinDataReview",
reportTitle = gsub("(.+)Template[.].+", "\\1 template", templateName),
reportTitleLevel = 2,
dataFileName = list.files(dir),
tableParams = list(tableVars = c("USUBJID", "EXDOSE"))
)
# run report
pathTemplate <- system.file("template", templateName,
package = "clinDataReview")
expect_error(
outputFile <- rmarkdown::render(
input = pathTemplate,
output_dir = dir,
intermediates_dir = dir,
quiet = TRUE,
output_options = outputOpts
),
NA
)
expect_true(file.exists(outputFile))
detach(params);rm(params)
})
test_that("The listing template with multiple input data files is successfully rendered", {
skip_on_cran()
dir <- tempfile("listing")
dir.create(dir)
templateName <- "listingTemplate.Rmd"
# create example datasets
# vital signs
dataADVS <- data.frame(
PARAM = "Heart beat",
USUBJID = c(1, 2),
VISIT = c("Baseline", "Week 1"),
AVAL = c(2, 3),
stringsAsFactors = FALSE
)
write_xpt(dataADVS, file.path(dir, "advs.xpt"))
# lab datasets
dataADLB <- data.frame(
PARAM = "GP",
USUBJID = c(1, 2),
VISIT = c("Baseline", "Week 1"),
AVAL = c(3, 6),
stringsAsFactors = FALSE
)
write_xpt(dataADLB, file.path(dir, "adlb.xpt"))
# set parameters
params <- list(
pathDataFolder = dir,
template = templateName,
templatePackage = "clinDataReview",
reportTitle = "Listing of the lab and vital signs",
reportTitleLevel = 2,
dataFileName = c("advs.xpt", "adlb.xpt"),
tableParams = list(tableVars = c("PARAM", "USUBJID", "VISIT", "AVAL"))
)
# run report
pathTemplate <- system.file("template", templateName,
package = "clinDataReview")
expect_error(
outputFile <- rmarkdown::render(
input = pathTemplate,
output_dir = dir,
intermediates_dir = dir,
quiet = TRUE,
output_options = outputOpts
),
NA
)
expect_true(file.exists(outputFile))
detach(params);rm(params)
})
test_that("The count visualization template is successfully rendered", {
skip_on_cran()
dir <- tempfile("countsVisualization")
dir.create(dir)
templateName <- "countsVisualizationTemplate.Rmd"
# create example data
dataEX <- data.frame(
"USUBJID" = c(1, 1, 2, 3, 4),
"EXDOSE" = "100",
stringsAsFactors = FALSE
)
write_xpt(dataEX, file.path(dir, "adex.xpt"))
# set parameters
params <- list(
pathDataFolder = dir,
template = templateName,
templatePackage = "clinDataReview",
reportTitle = gsub("(.+)Template[.].+", "\\1 template", templateName),
dataFileName = list.files(dir, pattern = "xpt"),
countVar = "EXDOSE"
)
# run report
pathTemplate <- system.file("template", templateName,
package = "clinDataReview")
expect_error(
outputFile <- rmarkdown::render(
input = pathTemplate,
output_dir = dir,
intermediates_dir = dir,
quiet = TRUE,
output_options = outputOpts
),
NA
)
expect_true(file.exists(outputFile))
detach(params);rm(params)
})
test_that("The plot template is successfully rendered", {
skip_on_cran()
dir <- tempfile("plot")
dir.create(dir)
templateName <- "plotTemplate.Rmd"
# create example data
dataEX <- data.frame(
"USUBJID" = c(1, 1, 2, 3, 4),
"EXDOSE" = "100",
stringsAsFactors = FALSE
)
write_xpt(dataEX, file.path(dir, "adex.xpt"))
# set parameters
params <- list(
pathDataFolder = dir,
template = templateName,
templatePackage = "clinDataReview",
reportTitle = gsub("(.+)Template[.].+", "\\1 template", templateName),
dataFileName = list.files(dir, pattern = "xpt"),
plotFunction = "scatterplotClinData",
plotParams = list(xVar = "USUBJID", yVar = "EXDOSE")
)
# run report
pathTemplate <- system.file("template", templateName,
package = "clinDataReview")
expect_error(
outputFile <- rmarkdown::render(
input = pathTemplate,
output_dir = dir,
intermediates_dir = dir,
quiet = TRUE,
output_options = outputOpts
),
NA
)
expect_true(file.exists(outputFile))
detach(params);rm(params)
})
test_that("The summary plot template is successfully rendered", {
skip_on_cran()
dir <- tempfile("summaryPlot")
dir.create(dir)
templateName <- "summaryPlotTemplate.Rmd"
# create example data
dataEX <- data.frame(
"USUBJID" = c(1, 1, 2, 3, 4),
"EXDOSE" = "100",
stringsAsFactors = FALSE
)
write_xpt(dataEX, file.path(dir, "adex.xpt"))
# set parameters
params <- list(
pathDataFolder = dir,
template = templateName,
templatePackage = "clinDataReview",
reportTitle = gsub("(.+)Template[.].+", "\\1 template", templateName),
dataFileName = list.files(dir, pattern = "xpt"),
tableParams = list(
var = "EXDOSE",
stats = "getStats(type = 'n')"
),
plotFunction = "barplotClinData",
plotParams = list(xVar = "variableGroup", yVar = "statN")
)
# run report
pathTemplate <- system.file("template", templateName,
package = "clinDataReview")
expect_error(
outputFile <- rmarkdown::render(
input = pathTemplate,
output_dir = dir,
intermediates_dir = dir,
quiet = TRUE,
output_options = outputOpts
),
NA
)
expect_true(file.exists(outputFile))
detach(params);rm(params)
})
test_that("A plot parameter is correctly extracted from the data in a summary plot template", {
skip_on_cran()
dir <- tempfile("summaryPlot");dir.create(dir)
templateName <- "summaryPlotTemplate.Rmd"
# create example data
dataEX <- data.frame(
"USUBJID" = c(1, 1, 2, 3, 4),
"EXDOSE" = structure(rep("100", 5), label = "Dose"),
stringsAsFactors = FALSE
)
write_xpt(dataEX, file.path(dir, "adex.xpt"))
# set parameters
params <- list(
pathDataFolder = dir,
template = templateName,
templatePackage = "clinDataReview",
reportTitle = gsub("(.+)Template[.].+", "\\1 template", templateName),
dataFileName = list.files(dir, pattern = "xpt"),
tableParams = list(
rowVar = "EXDOSE",
stats = "getStats(type = 'n')"
),
plotFunction = "barplotClinData",
plotParams = list(
xVar = "EXDOSE",
yVar = "statN",
title = structure(
"paste0(labelVars['EXDOSE'], ': ', unique(summaryTableI$EXDOSE))",
class = "r-lazy"
)
)
)
# run report
pathTemplate <- system.file("template", templateName,
package = "clinDataReview")
expect_error(
outputFile <- rmarkdown::render(
input = pathTemplate,
output_dir = dir,
intermediates_dir = dir,
quiet = TRUE,
output_options = outputOpts
),
NA
)
expect_true(file.exists(outputFile))
pl <- listPlots[[1]]$plot
expect_equal(
object = plotly::plotly_build(pl)$x$layout$title$text,
expected = "Dose: 100"
)
detach(params);rm(params)
})
test_that("The summary table template is successfully rendered", {
skip_on_cran()
dir <- tempfile("summaryTable")
dir.create(dir)
templateName <- "summaryTableTemplate.Rmd"
# create example data
dataEX <- data.frame(
"USUBJID" = c(1, 1, 2, 3, 4),
"EXDOSE" = "100",
stringsAsFactors = FALSE
)
write_xpt(dataEX, file.path(dir, "adex.xpt"))
# set parameters
params <- list(
pathDataFolder = dir,
template = templateName,
templatePackage = "clinDataReview",
reportTitle = gsub("(.+)Template[.].+", "\\1 template", templateName),
dataFileName = list.files(dir, pattern = "xpt"),
tableParams = list(
var = c("USUBJID", "EXDOSE"),
stats = "setNames(getStats(type = 'n'), nm = 'n')"
)
)
# run report
pathTemplate <- system.file("template", templateName,
package = "clinDataReview")
expect_error(
outputFile <- rmarkdown::render(
input = pathTemplate,
output_dir = dir,
intermediates_dir = dir,
quiet = TRUE,
output_options = outputOpts
),
NA
)
expect_true(file.exists(outputFile))
detach(params);rm(params)
})
test_that("The patient profile template is successfully rendered", {
skip_on_cran()
dir <- tempfile("patientProfiles")
dir.create(dir)
templateName <- "patientProfilesTemplate.Rmd"
# create example data
dataEX <- data.frame(
"USUBJID" = c(1, 1, 2, 3, 4),
"EXDOSE" = "100",
stringsAsFactors = FALSE
)
write_xpt(dataEX, file.path(dir, "adex.xpt"))
# set parameters
patientProfilePath <- file.path(dir, "patientProfiles")
params <- list(
pathDataFolder = dir,
patientProfilePath = patientProfilePath,
template = templateName,
templatePackage = "clinDataReview",
reportTitle = gsub("(.+)Template[.].+", "\\1 template", templateName),
patientProfilesParams = list(
list(
typePlot = "text",
dataFileName = list.files(dir, pattern = "xpt"),
plotParams = list(
paramValueVar = c("USUBJID", "EXDOSE")
)
)
)
)
# run report
pathTemplate <- system.file("template", templateName,
package = "clinDataReview")
expect_error(
outputFile <- rmarkdown::render(
input = pathTemplate,
output_dir = dir,
intermediates_dir = dir,
quiet = TRUE,
output_options = outputOpts
),
NA
)
expect_true(file.exists(outputFile))
expect_true(file.exists(patientProfilePath))
expect_true(all(grepl("^subjectProfile-", list.files(patientProfilePath))))
detach(params);rm(params)
})