tests/testthat/test-name_usage.r

context("name_usage")

test_that("name_usage return parameter works", {
  skip_on_cran() # because fixture in .Rbuildignore
  
  vcr::use_cassette("name_usage_return_param", {
    # the 1st time does throw a warning
    expect_warning((z = name_usage(return = "all")), 
      "`return` param in `name_usage` function is defunct"
    )
    # this is no longer the case with removal of conditionz dep
    # the 2nd time does not throw any warnings
    # expect_warning((z = name_usage(return = "all")), 
      # NA
    # )
  })
  # still returns data
  expect_is(z, "gbif")
})

test_that("name_usage works", {
  vcr::use_cassette("name_usage", {
    tt <- name_usage(key = 1)
    uu <- name_usage(key = 5231190, data = 'references')
  }, preserve_exact_body_bytes = TRUE)

  expect_is(tt, "gbif")
  expect_is(tt$data$key, "integer")
  expect_is(tt$data$kingdom, "character")

  expect_is(uu, "gbif")
  expect_is(uu$data, "data.frame")
  expect_is(uu$data$sourceTaxonKey, "integer")
  expect_is(uu$data$citation, "character")

  # name_usage returns the correct value
  expect_equal(tt$data$kingdom, "Animalia")

  # name_usage returns the correct dimensions
  expect_equal(length(tt), 2)
  expect_equal(NROW(tt$data), 1)

  expect_equal(length(uu), 2)
  expect_equal(NCOL(uu$meta), 3)
  expect_equal(NCOL(uu$data), 6)
})

test_that("name_usage name route works", {
  vcr::use_cassette("name_usage_data_name", {
    rte1 <- name_usage(key = 5231190, data = 'name')
    rte1a <- name_usage(key = 5127291, data = 'name')
  })
  expect_is(rte1, "gbif")
  expect_is(rte1a, "gbif")
  expect_true(NROW(rte1$meta) == 0)
  expect_true(NROW(rte1a$meta) == 0)
  expect_is(rte1$data, "data.frame")
  expect_is(rte1a$data, "data.frame")
})

test_that("name_usage parents route works", {
  vcr::use_cassette("name_usage_data_parents", {
    rte2 <- name_usage(key = 5231190, data = 'parents')
    rte2a <- name_usage(key = 5135783, data = 'parents')
  }, preserve_exact_body_bytes = TRUE)

  expect_is(rte2, "gbif")
  expect_is(rte2a, "gbif")
  expect_true(NROW(rte2$meta) == 0)
  expect_true(NROW(rte2a$meta) == 0)
  expect_is(rte2$data, "data.frame")
  expect_is(rte2a$data, "data.frame")
})

test_that("name_usage children route works", {
  vcr::use_cassette("name_usage_data_children", {
    rte3 <- name_usage(key = 5231190, data = 'children')
    rte3a <- name_usage(key = 5135790, data = 'children')
  }, preserve_exact_body_bytes = TRUE)

  expect_is(rte3, "gbif")
  expect_is(rte3a, "gbif")
  expect_is(rte3$meta, "data.frame")
  expect_is(rte3a$meta, "data.frame")
  expect_is(rte3$data, "data.frame")
  expect_is(rte3a$data, "data.frame")
})

test_that("name_usage related route works", {
  vcr::use_cassette("name_usage_data_related", {
    rte4 <- name_usage(key = 5231190, data = 'related')
    rte4a <- name_usage(key = 5135787, data = 'related')
  }, preserve_exact_body_bytes = TRUE)
  expect_is(rte4, "gbif")
  expect_is(rte4a, "gbif")
  expect_is(rte4$meta, "data.frame")
  expect_is(rte4a$meta, "data.frame")
  expect_is(rte4$data, "data.frame")
  expect_is(rte4a$data, "data.frame")
})

test_that("name_usage synonyms route works", {
  vcr::use_cassette("name_usage_data_synonyms", {
    rte5 <- name_usage(key = 5231190, data = 'synonyms')
    rte5a <- name_usage(key = 5135790, data = 'synonyms')
  })
  expect_is(rte5, "gbif")
  expect_is(rte5a, "gbif")
  expect_is(rte5$meta, "data.frame")
  expect_is(rte5a$meta, "data.frame")
  expect_equal(NROW(rte5$data), 1)
  expect_is(rte5a$data, "data.frame")
})

test_that("name_usage descriptions route works", {
  vcr::use_cassette("name_usage_data_descriptions", {
    rte6 <- name_usage(key = 5231190, data = 'descriptions')
    rte6a <- name_usage(key = 5127299, data = 'descriptions')
  }, preserve_exact_body_bytes = TRUE)

  expect_is(rte6, "gbif")
  expect_is(rte6a, "gbif")
  expect_is(rte6$meta, "data.frame")
  expect_is(rte6a$meta, "data.frame")
  expect_is(rte6$data, "data.frame")
  expect_is(rte6a$data, "data.frame")
})

test_that("name_usage distributions route works", {
  vcr::use_cassette("name_usage_data_distributions", {
    rte7 <- name_usage(key = 5231190, data = 'distributions')
    rte7a <- name_usage(key = 5231190, data = 'distributions')
  }, preserve_exact_body_bytes = TRUE)
  expect_is(rte7, "gbif")
  expect_is(rte7a, "gbif")
  expect_is(rte7$meta, "data.frame")
  expect_is(rte7a$meta, "data.frame")
  expect_is(rte7$data, "data.frame")
  expect_is(rte7a$data, "data.frame")
})

test_that("name_usage media route works", {
  vcr::use_cassette("name_usage_data_media", {
    rte8 <- name_usage(key = 5231190, data = 'media')
    rte8a <- name_usage(key = 5231190, data = 'media')
  })
  expect_is(rte8, "gbif")
  expect_is(rte8a, "gbif")
  expect_is(rte8$meta, "data.frame")
  expect_is(rte8a$meta, "data.frame")
  expect_is(rte8$data, "data.frame")
  expect_is(rte8a$data, "data.frame")
})

test_that("name_usage references route works", {
  vcr::use_cassette("name_usage_data_references", {
    rte9 <- name_usage(key = 5231190, data = 'references')
    rte9a <- name_usage(key = 5231190, data = 'references')
  }, preserve_exact_body_bytes = TRUE)

  expect_is(rte9, "gbif")
  expect_is(rte9a, "gbif")
  expect_is(rte9$meta, "data.frame")
  expect_is(rte9a$meta, "data.frame")
  expect_is(rte9$data, "data.frame")
  expect_is(rte9a$data, "data.frame")
})

test_that("name_usage speciesProfiles route works", {
  vcr::use_cassette("name_usage_data_speciesProfiles", {
    rte10 <- name_usage(key = 5231190, data = 'speciesProfiles')
    rte10a <- name_usage(key = 5136020, data = 'speciesProfiles')
  })
  expect_is(rte10, "gbif")
  expect_is(rte10a, "gbif")
  expect_is(rte10$meta, "data.frame")
  expect_is(rte10a$meta, "data.frame")
  expect_is(rte10$data, "data.frame")
  expect_is(rte10a$data, "data.frame")
})

test_that("name_usage vernacularNames route works", {
  vcr::use_cassette("name_usage_data_vernacularNames", {
    rte11 <- name_usage(key = 5231190, data = 'vernacularNames')
    rte11a <- name_usage(key = 5136034, data = 'vernacularNames')
  }, preserve_exact_body_bytes = TRUE)
  expect_is(rte11, "gbif")
  expect_is(rte11a, "gbif")
  expect_is(rte11$meta, "data.frame")
  expect_is(rte11a$meta, "data.frame")
  expect_is(rte11$data, "data.frame")
  expect_is(rte11a$data, "data.frame")
})

test_that("name_usage typeSpecimens route works", {
  vcr::use_cassette("name_usage_data_typeSpecimens", {
    rte12 <- name_usage(key = 5231190, data = 'typeSpecimens')
    rte12a <- name_usage(key = 5097652, data = 'typeSpecimens')
    })
  expect_is(rte12, "gbif")
  expect_is(rte12a, "gbif")
  expect_is(rte12$meta, "data.frame")
  expect_is(rte12a$meta, "data.frame")
  expect_equal(NROW(rte12$data), 0)
  # this used to be up, seems to be down now, comment on 2015-12-04
  expect_equal(NROW(rte12a$data), 0)
})

test_that("name_usage iucnRedListCategory route works", {
  vcr::use_cassette("name_usage_data_iucnRedListCategory", {
    iucn_a <- name_usage(key = 7412043, data = 'iucnRedListCategory')
    iucn_b <- name_usage(key = 5097652, data = 'iucnRedListCategory')
  })
  expect_is(iucn_a, "gbif")
  expect_is(iucn_b, "gbif")
  expect_is(iucn_a$meta, "data.frame")
  expect_is(iucn_b$meta, "data.frame")
  expect_equal(NROW(iucn_a$data), 1)
  expect_equal(NROW(iucn_b$data), 1)
})

test_that("name_usage fails correctly", {
  vcr::use_cassette("name_usage_fails_well", {
    ### verbatim not working right now for some unknown reason
    expect_error(name_usage(key = 3119195, data = 'verbatim'))
    # Select many options, doesn't work
    expect_error(name_usage(key = 3119195, data = c('media', 'synonyms')))

    # fails with more than 1 value
    keys <- c("73605f3a-af85-4ade-bbc5-522bfb90d847",
      "d7c60346-44b6-400d-ba27-8d3fbeffc8a5")
    expect_error(name_usage(datasetKey = keys),
      "length\\(datasetKey\\) == 1 is not TRUE")

    expect_error(name_usage(language = c('spanish', 'german')),
      "length\\(language\\) == 1 is not TRUE")

    expect_error(name_usage(name = c('Quercus', 'Puma')),
    "length\\(name\\) == 1 is not TRUE")

    expect_error(name_usage(rank = c('GENUS', 'SPECIES')),
    "length\\(rank\\) == 1 is not TRUE")
  })
})


# paging
# Commented:it takes too much time.
# Uncomment after introducing test caching with vcr package)
# test_that("paging: class data and meta not modified by paging", {
#   skip_on_cran()
#
#   bb1 <- name_usage(datasetKey = "9ff7d317-609b-4c08-bd86-3bc404b77c42",
#                    limit = 1)
#   bb2 <- name_usage(datasetKey = "9ff7d317-609b-4c08-bd86-3bc404b77c42",
#                     limit = 1789)
#   expect_true(all(class(bb1) == class(bb2)))
#   expect_true(all(class(bb1$meta) == class(bb2$meta)))
#   expect_true(all(class(bb1$data) == class(bb2$data)))
# })
#
# test_that("paging: name_usage returns all records from dataset: limit > n_records", {
#   skip_on_cran()
#
#   cc <- name_usage(datasetKey = "9ff7d317-609b-4c08-bd86-3bc404b77c42",
#                  limit = 5000)
#   expect_equal(cc$meta$offset, 2000)
#   expect_lt(cc$meta$limit, 1000)
#   expect_gt(nrow(cc$data), 2000)
# })
#
# test_that("paging: name_usage returns as many records as asked via limit", {
#   skip_on_cran()
#
#   dd <- name_usage(datasetKey = "9ff7d317-609b-4c08-bd86-3bc404b77c42",
#                    limit = 1329)
#   expect_equal(dd$meta$offset, 1000)
#   expect_equal(dd$meta$limit, 329)
#   expect_equal(nrow(dd$data), 1329)
#
#   ee <- name_usage(datasetKey = "9ff7d317-609b-4c08-bd86-3bc404b77c42",
#                    limit = 1001)
#   expect_equal(ee$meta$offset, 1000)
#   expect_equal(ee$meta$limit, 1)
#   expect_equal(nrow(ee$data), 1001)
# })
ropensci/rgbif documentation built on April 20, 2024, 10:49 a.m.