Nothing
test_that("gerda_covariates returns a data frame with expected structure", {
covs <- gerda_covariates()
expect_s3_class(covs, "data.frame")
expect_gt(nrow(covs), 0)
expect_true("county_code" %in% names(covs))
expect_true("year" %in% names(covs))
expect_true("unemployment_rate" %in% names(covs))
expect_true("gdp_per_capita" %in% names(covs))
expect_true("share_foreign" %in% names(covs))
})
test_that("gerda_covariates_codebook returns a data frame with expected structure", {
codebook <- gerda_covariates_codebook()
expect_s3_class(codebook, "data.frame")
expect_gt(nrow(codebook), 0)
expect_true(all(c("variable", "label") %in% names(codebook)))
# All covariate variables should be documented
covs <- gerda_covariates()
cov_vars <- names(covs)
documented_vars <- codebook$variable
expect_true(all(cov_vars %in% documented_vars))
})
test_that("add_gerda_covariates validates input", {
expect_error(add_gerda_covariates("not a data frame"), "must be a data frame")
# Missing election_year
bad_data <- data.frame(county_code = "05111", x = 1)
expect_error(add_gerda_covariates(bad_data), "election_year")
# Missing geographic columns
bad_data2 <- data.frame(election_year = 2017, x = 1)
expect_error(add_gerda_covariates(bad_data2), "must contain either")
})
test_that("add_gerda_covariates works with county-level data", {
covs <- gerda_covariates()
sample_counties <- unique(covs$county_code)[1:5]
sample_year <- covs$year[1]
county_data <- data.frame(
county_code = sample_counties,
election_year = sample_year,
votes = c(100, 200, 150, 300, 250),
stringsAsFactors = FALSE
)
result <- add_gerda_covariates(county_data)
# Should keep all original rows
expect_equal(nrow(result), nrow(county_data))
# Should add covariate columns
expect_true("unemployment_rate" %in% names(result))
expect_true("gdp_per_capita" %in% names(result))
# Original columns should be preserved
expect_true("votes" %in% names(result))
expect_true("election_year" %in% names(result))
})
test_that("add_gerda_covariates works with municipal-level data", {
covs <- gerda_covariates()
sample_county <- unique(covs$county_code)[1]
sample_year <- covs$year[1]
# Create mock municipal data with 8-digit AGS derived from a real county code
muni_data <- data.frame(
ags = paste0(sample_county, c("001", "002", "003")),
election_year = sample_year,
votes = c(100, 200, 150),
stringsAsFactors = FALSE
)
result <- suppressMessages(add_gerda_covariates(muni_data))
# Should keep all original rows
expect_equal(nrow(result), nrow(muni_data))
# Should add covariate columns
expect_true("unemployment_rate" %in% names(result))
# All municipalities in same county should get identical covariate values
unemp_vals <- result$unemployment_rate
expect_true(length(unique(unemp_vals)) == 1)
# Temporary county_code_temp column should be removed
expect_false("county_code_temp" %in% names(result))
# Original columns should be preserved
expect_true("votes" %in% names(result))
})
test_that("add_gerda_covariates prefers county_code over ags when both present", {
covs <- gerda_covariates()
sample_county <- unique(covs$county_code)[1]
sample_year <- covs$year[1]
both_data <- data.frame(
county_code = sample_county,
ags = paste0(sample_county, "001"),
election_year = sample_year,
stringsAsFactors = FALSE
)
# Should use county_code and emit a message
expect_message(add_gerda_covariates(both_data), "Using 'county_code'")
})
test_that("add_gerda_covariates returns NAs for unmatched years", {
covs <- gerda_covariates()
sample_county <- unique(covs$county_code)[1]
# Use a year outside the covariate range
county_data <- data.frame(
county_code = sample_county,
election_year = 1960,
stringsAsFactors = FALSE
)
result <- suppressMessages(add_gerda_covariates(county_data))
expect_equal(nrow(result), 1)
expect_true(is.na(result$unemployment_rate))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.