#'
#' @title Initialising testthat Framework for DataSHIELD
#' @description The function creates a testthat framework including folder structure,
#' testthat.R file, addition of testthat in the Description file. In the DSLite setup,
#' standard DataSHIELD test datasets will be copied into the test suite folder, and a setup.R file
#' will be constructed for the use of DSLite. This also includes overwriting the testthat.R file.
#' Dependencies will be added to the Description file.
#' @details see above
#' @return No message so far
#' @author Florian Schwarz for the German Institute of Human Nutrition
#' @import usethis
#' @import fs
#' @import here
#' @export
#'
init.dsTest <- function(testType = c("local", "DSLite"),
                        datasetType = c("CNSIM", "INTIMIC")){
  if(testType == "local"){
  # Initiate the tests and testthat folder and the testthat.R file
  usethis::use_testthat()
  # Create a connection_to_datasets sub-directory in the testthat folder
  usethis::use_directory(path = "tests/testthat/connection_to_datasets")
  directory <- fs::path_package(package = "DSFunctionCreator", "templates/Tests/Client/Local")
  file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Client/Local"), "/setup.R"), to = paste0(here::here("tests/testthat"), "/setup.R"))
  file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Client/Local"), "/init_local_settings.R"), to = paste0(here::here("tests/testthat/connection_to_datasets"), "/init_local_settings.R"))
  file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Client/Local"), "/init_studies_datasets.R"), to = paste0(here::here("tests/testthat/connection_to_datasets"), "/init_studies_datasets.R"))
  file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Client/Local"), "/init_testing_datasets.R"), to = paste0(here::here("tests/testthat/connection_to_datasets"), "/init_testing_datasets.R"))
  file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Client/Local"), "/local_settings.csv"), to = paste0(here::here("tests/testthat/connection_to_datasets"), "/local_settings.csv"))
  } else if(testType == "DSLite"){
    # Initiate the tests and testthat folder and the testthat.R file
    usethis::use_testthat()
    # Create a sub-directory in the testthat folder for the test datasets
    usethis::use_directory(path = "tests/testthat/testdata")
    #directory <- fs::path_package(package = "DSFunctionCreator", "templates/Tests/Client/DSLite")
    if(datasetType == "CNSIM"){
    file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Datasets/CNSIM"), "/CNSIM1.csv"), to = paste0(here::here("tests/testthat/testdata", "/CNSIM1.csv")))
    file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Datasets/CNSIM"), "/CNSIM2.csv"), to = paste0(here::here("tests/testthat/testdata", "/CNSIM2.csv")))
    file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Datasets/CNSIM"), "/CNSIM3.csv"), to = paste0(here::here("tests/testthat/testdata", "/CNSIM3.csv")))
    factor_variables <- c("DIS_CVA",
                          "MEDI_LPD",
                          "DIS_DIAB",
                          "DIS_AMI",
                          "GENDER",
                          "PM_BMI_CATEGORICAL")
    input_dataset_name <- "CNSIM"
    }
    if(datasetType == "INTIMIC"){
    file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Datasets/INTIMIC"), "/TestData_Microb_1.csv"), to = paste0(here::here("tests/testthat/testdata", "/TestData_Microb_1.csv")))
    file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Datasets/INTIMIC"), "/TestData_Microb_2.csv"), to = paste0(here::here("tests/testthat/testdata", "/TestData_Microb_2.csv")))
    file.copy(from = paste0(fs::path_package(package = "DSFunctionCreator", "templates/Tests/Datasets/INTIMIC"), "/TestData_Microb_3.csv"), to = paste0(here::here("tests/testthat/testdata", "/TestData_Microb_3.csv")))
    factor_variables <- c("Sex",
                          "Education",
                          "Hypertension",
                          "Eyes",
                          "Children")
    input_dataset_name <- "TestData_Microb_"
    }
    dsPackageClient <- usethis:::project_name()
    dsPackage <- gsub("Client", "", dsPackageClient)
    #### This part fills the DSLite Setup template
    usethis::use_template("/Tests/Client/DSLite/dslite_setup_template.R",
                          save_as = paste0("tests/testthat/setup.R"),
                          data = list(input_dataset = input_dataset_name,
                                      factor_variables_transform = factor_variables,
                                      dsPackage = dsPackage),
                          package = "DSFunctionCreator")
    #### This part overwrites the standard testthat.R file to accomodate DataSHIELD
    usethis::use_template("/Tests/Client/DSLite/dslite_testthat_template.R",
                          save_as = paste0("tests/testthat.R"),
                          data = list(dsPackage = dsPackage),
                          package = "DSFunctionCreator")
    #### Check whether Description file already exists (should always before doing these steps...)
    if(!(file.exists(here::here("Description")))){
      usethis::use_description()
    }
    #### This part creates necessary dependencies in the Description File
    #### Note that DS Installations in this version are installed via remotes from GitHub
    usethis:::use_dependency("DSLite","suggests")
    usethis:::use_dependency("DSI","imports")
    usethis:::use_dependency("DSOpal","imports")
    usethis:::use_dependency("remotes","imports")
    #### Special case if dsBase is the DS package where FunctionCreator is being used
    if(!(dsPackage == "dsBase")){
      usethis:::use_dependency("dsBase","suggests")
      usethis:::use_dependency("dsBaseClient","imports")
      usethis:::proj_desc_field_update("Remotes", "datashield/dsBaseClient@6.3.0, datashield/dsBase@6.3.0", overwrite = TRUE)
    }
  }
  return()
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.