tests/testthat/test-fetchOSD.R

context("fetchOSD() -- requires internet connection")

## these are the elements of the list returned when extended=TRUE
## update here as-needed
extended.table.names <<- c("SPC", "competing", "geog_assoc_soils" ,"geomcomp", "hillpos", "mtnpos", "terrace", "flats", "shape_across", "shape_down", "pmkind", "pmorigin", "mlra", "ecoclassid", "climate.annual", "climate.monthly", "NCCPI", "soilweb.metadata")

test_that("fetchOSD() works", {

  skip_if_offline()

  skip_on_cran()

  ## sample data
  x <<- fetchOSD(soils = c('sierra', 'cecil'))
  
  skip_if(is.null(x))
  

  # standard request
  expect_true(inherits(x, 'SoilProfileCollection'))
  
  # all of the results should contain the search term
  f <- grepl('sierra|cecil', x$id, ignore.case = TRUE)
  expect_equal(all(f), TRUE)

})



test_that("fetchOSD() returns NULL with bogus query", {

  skip_if_offline()

  skip_on_cran()

  # a message is printed and NULL returned when no results
  res <- suppressMessages(fetchOSD(soils='XXX'))
  expect_null(res)

})



test_that("fetchOSD() returns a list + SPC in extended mode", {

  skip_if_offline()

  skip_on_cran()
  
  x.extended <<- fetchOSD(soils = c('sierra', 'cecil'), extended = TRUE)
  
  skip_if(is.null(x.extended))
  
  # extended request
  expect_true(inherits(x.extended, 'list'))
  expect_true(inherits(x.extended$SPC, 'SoilProfileCollection'))

})


test_that("fetchOSD() sensible values when missing in extended mode", {
  
  skip_if_offline()
  
  skip_on_cran()
  
  x.extended <<- fetchOSD(soils = c('palau'), extended = TRUE)
  
  skip_if(is.null(x.extended))
  
  # extended request
  expect_false(x.extended$flats)
  expect_false(x.extended$climate.annual)
  
})



test_that("fetchOSD() returns reasonable data", {

  skip_if_offline()

  skip_on_cran()
  
  skip_if(is.null(x))
  
  # standard request
  expect_equal(nrow(site(x)) == 2, TRUE)
  expect_equal(nrow(horizons(x)) > 0, TRUE)
  expect_equal(idname(x), 'id')
  expect_equal(horizonDepths(x), c("top", "bottom"))

})


test_that("fetchOSD() returns reasonable data in extended mode", {

  skip_if_offline()

  skip_on_cran()
  
  skip_if(is.null(x.extended))
  
  # extended request
  expect_equal(
    names(x.extended), extended.table.names
    )

})


## pending further investigation due to FY22 changes: inactive series included in soilweb holdings
# # https://github.com/ncss-tech/soilDB/issues/128
# test_that("fetchOSD() returns warning in extended mode, when active + inactive series specified", {
# 
#   skip_if_offline()
# 
#   skip_on_cran()
# 
#   # warning added in response to #128
#   expect_warning(
#     xx <- fetchOSD(soils = c('sierra', 'Breadsprings', 'Hagerwest', 'Tintero'), extended = TRUE)
#   )
# 
#   # extended request components
#   expect_equal(
#     names(xx), extended.table.names
#   )
# 
# })
ncss-tech/soilDB documentation built on May 5, 2024, 2:21 a.m.