tests/testthat/test02-excel_loader.R

context("test02-excel_loader: ")

test_that("Check that upload fails if user does not use data.frame", {
  scidb_tmpl_path = system.file("extdata",
                                "scidb_metadata_template.xlsx", 
                                package="revealgenomics")
  dfDefn = readxl::read_excel(scidb_tmpl_path, sheet = 'Definitions', trim_ws = TRUE)
  dfDefn$dataset_id = 9999
  dfDefn$Notes = '...'
  
  # Verify that tibble cannot be registered
  e1 = tryCatch({
    register_definitions(df = dfDefn, only_test = T)
  }, error = function(e) {
    return(e)
  })
  
  # cat("Verify that tibble cannot be registered\n")
  expect_true("error" %in% class(e1))
  expect_true(length(grep("data.table", e1$message)) > 0)
})

test_that("Check that upload works for `Definitions` sheet of Excel template ", {
  # cat("# Now connect to scidb\n")
  e0 = tryCatch({rg_connect()}, error = function(e) {e})
  if (!("error" %in% class(e0))) { # do not run this on EE installs, mainly targeted for Travis
    scidb_tmpl_path = system.file("extdata",
                                  "scidb_metadata_template.xlsx", 
                                  package="revealgenomics")
    dfDefn = readxl::read_excel(scidb_tmpl_path, sheet = 'Definitions', trim_ws = TRUE)
    random_dataset_id = 9897
    dfDefn$dataset_id = random_dataset_id
    dfDefn$Notes = '...'

    init_db(arrays_to_init = get_entity_names(), force = TRUE, silent = TRUE)
    
    # cat("# Register definitions\n")
    def_id = register_definitions(df = as.data.frame(dfDefn))
    expect_true(nrow(def_id) == nrow(dfDefn))
    
    # cat("# Download definitionsn")
    dfDefn2 = get_definitions(updateCache = T)
    expect_true(nrow(dfDefn) == nrow(dfDefn2[dfDefn2$dataset_id == random_dataset_id, ])) # account for one dummy that has been added at init_db
    
    
    # cat("# Verify that downloaded definitions are consistent\n")
    expect_true(ncol(dfDefn2) == (ncol(drop_na_columns(dfDefn2[dfDefn2$dataset_id == random_dataset_id, ])) + 1))
    expect_true(all.equal(dfDefn, dfDefn2[dfDefn2$dataset_id == random_dataset_id, colnames(dfDefn)]))
    
    # cat("# Verify that output of search_definitions is consistent\n")
    expect_true(nrow(search_definitions(dataset_id = random_dataset_id + 1)) == 0)
    res = search_definitions(dataset_id = random_dataset_id)
    expect_true(nrow(dfDefn) == nrow(res))
    expect_true(all.equal(dfDefn2[dfDefn2$dataset_id == random_dataset_id, colnames(res)], res))
    
    # cat("# Clean-up\n")
    delete_entity(entity = .ghEnv$meta$arrDefinition, id = def_id$definition_id)
    expect_true(nrow(get_definitions(updateCache = T)) == 1) # account for one entry added by init_db to avoid repeated cache call
    
    # Clean up
    init_db(arrays_to_init = get_entity_names(), force = TRUE, silent = TRUE)
  }
})
Paradigm4/revealgenomics documentation built on April 7, 2020, 2:01 a.m.