library(dplyr)
context("test-gor_query.R")
conn <- NULL
test_that("platform_connect works", {
conn <<- platform_connect(
api_key = Sys.getenv("GOR_API_KEY"),
project = Sys.getenv("GOR_API_PROJECT"))
expect_is(conn, "platform_connection")
expect_true(!is.null(conn$header))
expect_true(!is.null(conn$header$headers[["Authorization"]]))
})
test_that("platform_connect works without parameters", {
conn <- platform_connect()
expect_is(conn, "platform_connection")
expect_true(!is.null(conn$header))
expect_true(!is.null(conn$header$headers[["Authorization"]]))
})
test_that("gor_query works using default query.service", {
result <-
"gor #dbsnp# | top 100" %>%
gor_query(conn, )
expect_is(result, "data.frame")
cols <- sapply(colnames(result),tolower,USE.NAMES=F) # GOR is not case insensitive so we need to convert to lowercase so the tests won't brake between ref versions
expect_equal(cols, c("chrom", "pos", "reference", "allele", "rsids"))
expect_equal(dim(result), c(100,5), info = "Expected dimensions of this dataframe are 100rows x 5 columns")
})
test_that("gor_query works using queryserver", {
result <-
"gor #dbsnp# | top 100" %>%
gor_query(conn, query.service = "queryserver")
expect_is(result, "data.frame")
cols <- sapply(colnames(result),tolower,USE.NAMES=F) # GOR is not case insensitive so we need to convert to lowercase so the tests won't brake between ref versions
expect_equal(cols, c("chrom", "pos", "reference", "allele", "rsids"))
expect_equal(dim(result), c(100,5), info = "Expected dimensions of this dataframe are 100rows x 5 columns")
})
test_that("gor_query works for queryservice", {
result <-
"gor #dbsnp# | top 100" %>%
gor_query(conn, query.service = "queryservice")
expect_is(result, "data.frame")
cols <- sapply(colnames(result),tolower,USE.NAMES=F) # GOR is not case insensitive so we need to convert to lowercase so the tests won't brake between ref versions
expect_equal(cols, c("chrom", "pos", "reference", "allele", "rsids"))
expect_equal(dim(result), c(100,5), info = "Expected dimensions of this dataframe are 100rows x 5 columns")
})
test_that("gor_query paging works", {
result <-
"gor #dbsnp# | where chrom='chr1' | top 1000" %>%
gor_query(conn, page_size = 100)
expect_is(result, "data.frame")
cols <- sapply(colnames(result),tolower,USE.NAMES=F) # GOR is not case insensitive so we need to convert to lowercase so the tests won't brake between ref versions
expect_equal(cols, c("chrom", "pos", "reference", "allele", "rsids"))
expect_equal(dim(result), c(1000,5), info = "Expected dimensions of this dataframe are 1000rows x 5 columns")
# Catch e.g. header repititions due to paging in the next 2 steps
result %>%
pull(1) %>%
unique() %>%
expect_equal("chr1", "We only asked for chr1 in query, so we expect nothing else")
result$reference %>%
unique() %>%
paste(collapse = "") %>%
strsplit("") %>%
unlist() %>%
unique() %>%
setequal(c("C", "G", "A", "T")) %>%
expect_true(info = "Unique reference column set values should equal the set GCAT")
result %>% pull(1)
})
test_that("gor_query tsv text output works (parse = F)", {
result <-
"gor #dbsnp# | top 100" %>%
gor_query(conn, parse = F)
expect_is(result, "character")
expect_equal(stringr::str_count(result, "\n"), 101) # should be 101 new lines including the header
})
test_that("long query string works - GORR-28", {
nor_junk <- paste0("create #", LETTERS, "# = norrows 10 | select 1 | top 100 | distinct | select rownum | calc odd mod(rownum,2) | calc A 1 | calc helloworld 214354678432456 | calc rusl 4235425 | signature -timeres 1", collapse = ";\n")
result <- "{nor_junk};
norrows 1000 | select RowNum | signature -timeres 1" %>%
stringr::str_glue() %>%
gor_query(conn)
expect_is(result, "data.frame")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.