tests/testthat/test-get_variants.R

context("test-get_variants")

#
## get_variants, exceptions
#
test_that("get_variants: exceptions", {
  expect_error(get_variants(set_operation = 'invalid_option'),
               "set_operation must be either 'union' or 'intersection'")
  expect_error(get_variants(verbose = 1L),
               "verbose must be either TRUE or FALSE")
  expect_error(get_variants(verbose = NA),
               "verbose must be either TRUE or FALSE")
  expect_error(get_variants(warnings = NA),
               "warnings must be either TRUE or FALSE")
  expect_error(get_variants(std_chromosomes_only = NA),
               "std_chromosomes_only must be either TRUE or FALSE")
})

#
## get_variants, by study id
#

with_mock_api({
  test_that("get_variants: GCST002420", {
    my_variants <- get_variants(study_id = 'GCST002420')
    expect_is(my_variants, 'variants')
  })
})


#
## get_variants, by association id
#
with_mock_api({
  test_that("get_variants: by association id", {
    my_variants <- get_variants(association_id = '15608')
    expect_is(my_variants, 'variants')
  })
})


#
## get_variants, by variant id
#
with_mock_api({
  test_that("get_variants: by variant id", {
    my_variants <- get_variants(variant_id = c('rs3798440', 'rs7329174'))
    expect_is(my_variants, 'variants')
  })
})

# Variants that also map to scaffolds other than the normal chromosomes
# rs10910092: maps to chr 1 and to CHR_HSCHR1_1_CTG3.
# rs570398477: maps to chr 2 and to CHR_HSCHR2_4_CTG1.
with_mock_api({
  test_that("get_variants: variants that also map to scaffolds other than the normal chromosomes", {
    my_variants <- get_variants(variant_id = c('rs10910092', 'rs570398477'),
                                std_chromosomes_only = TRUE)
    expect_is(my_variants, 'variants')
    expect_identical(nrow(my_variants@variants), 2L)
  })
})
with_mock_api({
  test_that("get_variants: variants that also map to scaffolds other than the normal chromosomes", {
    my_variants <- get_variants(variant_id = c('rs10910092', 'rs570398477'),
                                std_chromosomes_only = FALSE)
    expect_is(my_variants, 'variants')
    expect_identical(nrow(my_variants@variants), 4L)
  })
})


#
## get_variants, by efo id
#
with_mock_api({
  test_that("get_variants: by efo id", {
    my_variants <- get_variants(efo_id = 'EFO_0004291')
    expect_is(my_variants, 'variants')
  })
})

#
## get_variants, by pubmed id
#
with_mock_api({
  test_that("get_variants: by pubmed id", {
    my_variants <- get_variants(pubmed_id = '24882193')
    expect_is(my_variants, 'variants')
  })
})

#
## get_variants, by genomic range
#
with_mock_api({
  test_that("get_variants: by genomic range", {
    my_variants <- get_variants(genomic_range = list(chromosome = "22", start = 1L, end = "15473564"))
    expect_is(my_variants, 'variants')
  })
})

#
## get_variants, by cytogenetic band
#
with_mock_api({
  test_that("get_variants: by cytogenetic band", {
    my_variants <- get_variants(cytogenetic_band = '3p21.32')
    expect_is(my_variants, 'variants')
    expect_identical(my_variants@variants$chromosome_region, rep('3p21.32', nrow(my_variants@variants)))
  })
})

#
## get_variants, by gene name
#
with_mock_api({
  test_that("get_variants: by gene name", {
    my_variants <- get_variants(gene_name = 'AGKP1')
    expect_is(my_variants, 'variants')
  })
})

#
## get_variants, by efo_trait
#
with_mock_api({
  test_that("get_variants: by efo_trait", {
    my_variants <- get_variants(efo_trait = 'braces')
    expect_is(my_variants, 'variants')
  })
})

# ATTENTION: This test cannot be properly done as the REST API is
# not currently supporting case insensitive queries.
#
## get_variants, by reported_trait
#
# with_mock_api({
#   test_that("get_variants: by reported_trait", {
#     my_variants <- get_variants(reported_trait = "breast cancer")
#     expect_is(my_variants, 'variants')
#   })
# })

with_mock_api({
  test_that("get_variants: by genomic range", {
    my_variants <- get_variants(genomic_range = list(chromosome = "22", start = 1L, end = "15473564"))
    expect_is(my_variants, 'variants')
  })
})

test_that("get_variants: by genomic range, exceptions", {
  my_variants <- get_variants(genomic_range = list(chromosome = NULL, start = NULL, end = NULL))
  expect_is(my_variants, 'variants')
  expect_identical(my_variants, variants())
})

test_that("get_variants_by_study_id: study_id is NULL", {
  expect_identical(get_variants_by_study_id(), variants())
})
test_that("get_variants_by_study_id: status code is not 200", {
  bad_response <- list(response_code = 404L, status = 'Not OK', url = NA, content = NA)
  with_mock(`gwasrapidd:::gc_get` = function(...) bad_response,
            expect_identical(get_variants_by_study_id(study_id = 'GCST002420'), variants()))
})

test_that("get_variants_by_association_id: association_id is NULL", {
  expect_identical(get_variants_by_association_id(), variants())
})
test_that("get_variants_by_association_id: status code is not 200", {
  bad_response <- list(response_code = 404L, status = 'Not OK', url = NA, content = NA)
  with_mock(`gwasrapidd:::gc_get` = function(...) bad_response,
            expect_identical(get_variants(association_id = c('15608', '24299710')), variants()))
})

test_that("get_variants_by_variant_id: variant_id is NULL", {
  expect_identical(get_variants_by_variant_id(), variants())
})
test_that("get_variants_by_variant_id: status code is not 200", {
  bad_response <- list(response_code = 404L, status = 'Not OK', url = NA, content = NA)
  with_mock(`gwasrapidd:::gc_get` = function(...) bad_response,
            expect_identical(get_variants(variant_id = c('rs3798440', 'rs7329174')), variants()))
})


test_that("get_variants_by_efo_id: efo_id is NULL", {
  expect_identical(get_variants_by_efo_id(), variants())
})


test_that("get_variants_by_pubmed_id: pubmed is NULL", {
  expect_identical(get_variants_by_pubmed_id(), variants())
})
test_that("get_variants_by_pubmed_id: status code is not 200", {
  bad_response <- list(response_code = 404L, status = 'Not OK', url = NA, content = NA)
  with_mock(`gwasrapidd:::gc_get` = function(...) bad_response,
            expect_identical(get_variants(pubmed_id = c('21626137', '25890600')), variants()))
})

test_that("get_variants_by_efo_trait: efo_trait is NULL", {
  expect_identical(get_variants_by_efo_trait(), variants())
})
test_that("get_variants_by_efo_trait: status code is not 200", {
  bad_response <- list(response_code = 404L, status = 'Not OK', url = NA, content = NA)
  with_mock(`gwasrapidd:::gc_get` = function(...) bad_response,
            expect_identical(get_variants(efo_trait = c("lung adenocarcinoma", "uric acid measurement")), variants()))
})

test_that("get_variants_by_reported_trait: reported_trait is NULL", {
  expect_identical(get_variants_by_reported_trait(), variants())
})
test_that("get_variants_by_reported_trait: status code is not 200", {
  bad_response <- list(response_code = 404L, status = 'Not OK', url = NA, content = NA)
  with_mock(`gwasrapidd:::gc_get` = function(...) bad_response,
            expect_identical(get_variants(reported_trait = c("breast cancer", 'lung adenocarcinoma')), variants()))
})

#
## exists_variant
#
test_that("exists_variant: 200 response", {
  with_mock_api({
    expect_true(exists_variant(variant_id = 'rs3798440'))
  })
})


test_that("exists_variant: 404 response", {
  not_found_response <- list(response_code = 404L, status = 'Not OK', url = NA, content = NA)
  with_mock(`gwasrapidd:::gc_get` = function(...) not_found_response,
            expect_false(exists_variant(variant_id = 'foo'))
            )
})

test_that("exists_variant: exceptions", {
  expect_identical(exists_variant(variant_id = NULL), logical())
  expect_error(exists_variant(variant_id = NA_character_))
  expect_error(exists_variant(variant_id = character()))
  expect_error(exists_variant(variant_id = 42L))
})

Try the gwasrapidd package in your browser

Any scripts or data that you put into this service are public.

gwasrapidd documentation built on Dec. 28, 2022, 2:16 a.m.