tests/testthat/test-wrappers.R

context("tests wrappers and ease of use functions.")


### Tests with no authentication required
test_that("nassqs_record_count performs parameter validation", {
  expect_error(
    nassqs_record_count(setor_desc = "TEST SECTOR"), 
    "Parameter 'setor_desc' is not a valid parameter. Use `nassqs_params()`\n    for a list of valid parameters.", fixed = TRUE)
  Sys.sleep(1)
})


### Test API URLs with mock APIs ----

with_mock_api({
  test_that("nassqs_record_count forms a correct URL", {
    expected_url <- "https://quickstats.nass.usda.gov/api/get_counts?key=API_KEY&agg_level_desc=STATE&commodity_desc=CORN&domaincat_desc=NOT%20SPECIFIED&state_alpha=VA&statisticcat_desc=AREA%20HARVESTED&year=2012&format=CSV"
    expect_GET(nassqs_record_count(params), expected_url)
  })

  test_that("nassqs_yield returns a correct URL", {
    expected_url <- "https://quickstats.nass.usda.gov/api/api_GET?key=API_KEY&agg_level_desc=STATE&commodity_desc=CORN&domaincat_desc=NOT%20SPECIFIED&state_alpha=VA&statisticcat_desc=YIELD&year=2012&format=CSV"
    expect_GET(nassqs_yields(params), expected_url)
  })

  test_that("nassqs_yield returns a correct URL even if statisticcat_desc parameter is set to a different value", {
    expected_url <- "https://quickstats.nass.usda.gov/api/api_GET?key=API_KEY&agg_level_desc=STATE&commodity_desc=CORN&domaincat_desc=NOT%20SPECIFIED&state_alpha=VA&statisticcat_desc=YIELD&year=2012&format=CSV"
    params[['statisticcat_desc']] <- "AREA HARVESTED"
    expect_GET(nassqs_yields(params), expected_url)
  })

  test_that("nassqs_area returns a correct URL", {
    expected_url <- "https://quickstats.nass.usda.gov/api/api_GET?key=API_KEY&agg_level_desc=STATE&commodity_desc=CORN&domaincat_desc=NOT%20SPECIFIED&state_alpha=VA&statisticcat_desc=AREA%20BEARING&year=2012&unit_desc=ACRES&format=CSV"
    expect_GET(nassqs_acres(params, area = "AREA BEARING"), expected_url)
  })

  test_that("nassqs_area returns a correct URL when multiple areas are specified", {
    expected_url <- "https://quickstats.nass.usda.gov/api/api_GET?key=API_KEY&agg_level_desc=STATE&commodity_desc=CORN&domaincat_desc=NOT%20SPECIFIED&state_alpha=VA&statisticcat_desc=AREA%20HARVESTED&statisticcat_desc=AREA%20PLANTED&year=2012&unit_desc=ACRES&format=CSV"
    expect_GET(nassqs_acres(params, area = c("AREA HARVESTED", "AREA PLANTED")), expected_url)
  })
})


### API tests that require the API ----
with_authentication({
  test_that("nassqs_record_count returns a numeric", {
    v <- nassqs_record_count(params)
    expect_equal(is.numeric(v$count), TRUE)
    Sys.sleep(1)
  })

  test_that("nassqs_record_count takes a list of parameters", {
    v <- nassqs_record_count(params)
    expect_equal(is.numeric(v$count), TRUE)
    Sys.sleep(1)
  })

  test_that("nassqs_record_count takes parameters", {
    v <- nassqs_record_count(sector_desc = "SECTOR")
    expect_equal(is.numeric(v$count), TRUE)
    Sys.sleep(1)
  })
  
  test_that("nassqs_byfips returns correct data", {
    fips <- c("19001", "17005", "17001")
    r <- nassqs_byfips(
      fips = fips,
      commodity_desc = "CORN",
      util_practice_desc = "GRAIN",
      year = 2019,
      statisticcat_desc = "YIELD")
    
    expect_equal(unique(r$year), "2019")
    expect_equal(sort(r$county_name), c("ADAIR", "ADAMS", "BOND"))
    expect_equal(sort(r$state_name), c("ILLINOIS", "ILLINOIS", "IOWA"))
  })
  
})
potterzot/rnassqs documentation built on Sept. 10, 2023, 4:09 p.m.