# -----------------------------------------------------------------------------
testthat::context("stateMap()")
testthat::test_that("make sure data exists", {
testthat::expect_true(exists("USCensusStates_02"))
testthat::expect_true(exists("example_US_stateObesity"))
})
testthat::test_that("handles errors correctly", {
testthat::expect_error(stateMap())
testthat::expect_error(stateMap(example_US_stateObesity))
testthat::expect_error(stateMap(example_US_stateObesity, 'obesityRate', state_SFDF = 'wrongSFDF'),
"State dataset 'wrongSFDF' is not loaded.\n Please load it with MazamaSpatialtUtils::loadSpatialData()"
)
testthat::expect_error(stateMap(example_US_stateObesity, 'wrongParameter'),
"'wrongParameter' is not found in the incoming 'data' dataframe."
)
testthat::expect_error(stateMap(example_US_stateObesity[, c("stateName", "obesityRate")], 'obesityRate'),
"Missing fields in 'data': stateCode")
#if we add error message in function under parameter validation
testthat::expect_error(stateMap(example_US_stateObesity, 'obesityRate', state_SFDF = USCensusStates_02[, c("countryCode", "stateFIPS")]),
"Missing fields in 'state_SFDF': stateCode")
testthat::expect_error(stateMap(example_US_stateObesity, 'obesityRate', breaks=c('1', '2', '3')),
"Parameter 'breaks' must be a numeric vector."
)
testthat::expect_error(stateMap(example_US_stateObesity, 'obesityRate', breaks=c(1, 2, 'a')),
"Parameter 'breaks' must be a numeric vector."
)
testthat::expect_error(stateMap(example_US_stateObesity, 'obesityRate', stateCode = c(1, 2, 3)),
"Invalid state codes found: 1, 2, 3"
)
testthat::expect_error(stateMap(example_US_stateObesity, 'obesityRate', stateCode = c('ME', 'MM')),
"Invalid state codes found: MM"
)
testthat::expect_error(stateMap(example_US_stateObesity, 'obesityRate', stateCode = 3),
"Invalid state codes found: 3"
)
testthat::expect_error(stateMap(example_US_stateObesity, 'obesityRate', projection = 2),
"Parameter 'projection' must be a sf::st_crs object or a valid projection string."
)
testthat::expect_error(stateMap(example_US_stateObesity, 'obesityRate', projection = '+bad projection'))
testthat::expect_error(stateMap(example_US_countyCovid, parameter = c('cases', 'deaths'), title = "Bad title"),
"The lengths of 'parameter' and 'title' must be equal."
)
})
testthat::test_that("subsets by stateCode correctly", {
stateCodeList <- c('WA', 'OR')
plottedStates <- stateMap(example_US_stateObesity, 'obesityRate', stateCode = stateCodeList)[[1]]$shp$stateCode
testthat::expect_equal(length(plottedStates), length(stateCodeList))
testthat::expect_true('WA' %in% plottedStates)
testthat::expect_true('OR' %in% plottedStates)
})
testthat::test_that("returns correct object type", {
testthat::expect_true(class(stateMap(example_US_stateObesity, 'obesityRate')) == 'tmap')
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.