Nothing
test_that("read_html_table()", {
skip_if_offline()
# The table used in `get_senate_cloture_votes()`
# NOTE: `get_senate_cloture_votes()` performs some cleaning on this table
cloture_votes <- read_html_table(
url = "https://www.senate.gov/legislative/cloture/clotureCounts.htm",
css = ".cloturecount"
)
expect_s3_class(cloture_votes, "tbl_df")
expect_length(cloture_votes, 5)
# this table will add one row each Congress
expect_equal(nrow(cloture_votes), 55 + (current_congress() - 118))
expect_equal(colnames(cloture_votes),
c("Congress", "Years", "Motions Filed", "Votes on Cloture", "Cloture Invoked"))
# A table from Baseball Reference: Steve Garvey stats
br_table <- read_html_table(
url = "https://www.baseball-reference.com/players/g/garvest01.shtml",
css = "#players_standard_batting"
)
expect_s3_class(br_table, "tbl_df")
expect_length(br_table, 33)
expect_equal(nrow(br_table), 24)
})
test_that("get_online_data(): Voteview members", {
skip_if_offline()
vv_resp_members_s117 <- get_online_data(
"https://voteview.com/static/data/out/members/S117_members.csv", "Voteview")
expect_type(vv_resp_members_s117, "character")
# check that CSV format works
members_s117_df <- readr::read_csv(vv_resp_members_s117, show_col_types = FALSE)
expect_s3_class(members_s117_df, "tbl_df")
expect_length(members_s117_df, 22)
expect_equal(nrow(members_s117_df), 104)
expect_equal(unique(members_s117_df$chamber), c("President", "Senate"))
expect_equal(unique(members_s117_df$congress), 117)
})
test_that("get_online_data(): Voteview parties", {
skip_if_offline()
vv_resp_parties <- get_online_data(
"https://voteview.com/static/data/out/parties/HSall_parties.csv", "Voteview")
expect_type(vv_resp_parties, "character")
# check that CSV format works
parties_df <- readr::read_csv(vv_resp_parties, show_col_types = FALSE)
expect_s3_class(parties_df, "tbl_df")
expect_length(parties_df, 9)
expect_equal(unique(parties_df$chamber), c("President", "House", "Senate"))
# allow Congresses to be 1:(current_congress() - 1) in January of odd years
# since Voteview may not have votes from the new Congress yet
if (is_odd_year_january()) {
expect_true(all.equal(unique(parties_df$congress), 1:current_congress()) ||
all.equal(unique(parties_df$congress), 1:(current_congress() - 1)))
} else {
expect_equal(unique(parties_df$congress), 1:current_congress())
}
})
test_that("filter_chamber()", {
skip_if_offline()
# testing with `get_voteview_members()`
members_94 <- get_voteview_members(congress = 94)
expect_s3_class(members_94, "tbl_df")
expect_equal(nrow(members_94), 543)
# no filter
expect_equal(filter_chamber(members_94, chamber = "all"),
members_94)
expect_equal(filter_chamber(members_94, chamber = "congress"),
members_94)
expect_equal(filter_chamber(members_94, chamber = "HS"),
members_94)
# filter to Senate
sen_94 <- filter_chamber(members_94, chamber = "s")
expect_s3_class(sen_94, "tbl_df")
expect_equal(nrow(sen_94), 102)
expect_equal(sen_94,
dplyr::filter(members_94, chamber != "House") |>
dplyr::mutate(chamber = droplevels(chamber)))
expect_equal(filter_chamber(members_94, "senate"), sen_94)
expect_equal(filter_chamber(members_94, "sen"), sen_94)
# filter to House
hr_94 <- filter_chamber(members_94, chamber = "hr")
expect_s3_class(hr_94, "tbl_df")
expect_equal(nrow(hr_94), 442)
expect_equal(hr_94,
dplyr::filter(members_94, chamber != "Senate") |>
dplyr::mutate(chamber = droplevels(chamber)))
expect_equal(filter_chamber(members_94, "h"), hr_94)
expect_equal(filter_chamber(members_94, "house"), hr_94)
})
test_that("filter_congress()", {
skip_if_offline()
# base sheet: all members
all_members <- get_voteview_members()
expect_s3_class(all_members, "tbl_df")
expect_gt(nrow(all_members), 50400)
# single congress
members_1 <- filter_congress(all_members, 1)
expect_s3_class(members_1, "tbl_df")
expect_equal(nrow(members_1), 90)
expect_equal(levels(members_1$chamber), c("President", "House", "Senate"))
expect_equal(unique(members_1$congress), 1)
members_117 <- filter_congress(all_members, 117)
expect_s3_class(members_117, "tbl_df")
expect_equal(nrow(members_117), 559)
expect_equal(levels(members_117$chamber), c("President", "House", "Senate"))
expect_equal(unique(members_117$congress), 117)
# multiple congresses
# continuous
members_114_117 <- filter_congress(all_members, 114:117)
expect_s3_class(members_114_117, "tbl_df")
expect_equal(nrow(members_114_117), 2211)
expect_equal(unique(members_114_117$congress), 114:117)
expect_equal(dplyr::filter(members_114_117, congress == 117),
members_117)
# discontinuous
members_various <- filter_congress(all_members, c(5, 1, 100, 117, 95))
expect_s3_class(members_various, "tbl_df")
expect_equal(nrow(members_various), 1901)
# row order not impacted by order of Congress numbers in `congress` arg
expect_equal(unique(members_various$congress), c(1, 5, 95, 100, 117))
expect_equal(dplyr::filter(members_various, congress == 1),
members_1)
expect_equal(dplyr::filter(members_various, congress == 117),
members_117)
# all congresses
expect_equal(filter_congress(all_members, NULL), all_members)
expect_equal(filter_congress(all_members, 1:current_congress()), all_members)
})
test_that("filter_congress() error: invalid Congress number", {
skip_if_offline()
all_house <- get_voteview_members(chamber = "hr")
expect_error(filter_congress(all_house, -1), "Invalid `congress` argument")
expect_error(filter_congress(all_house, 0), "Invalid `congress` argument")
expect_error(filter_congress(all_house, current_congress() + 1),
"Invalid `congress` argument")
# error if any congress number is invalid
expect_error(filter_congress(all_house, c(1, 5, 500)), "Invalid `congress` argument")
# other types
expect_error(filter_congress(all_house, "-1"), "Invalid `congress` argument")
expect_error(filter_congress(all_house, "word"), "Invalid `congress` argument")
expect_error(filter_congress(all_house, FALSE), "Invalid `congress` argument")
})
test_that("filter_congress() error: Congress numbers not found", {
skip_if_offline()
all_sens <- get_voteview_members("s")
expect_s3_class(all_sens, "tbl_df")
expect_gt(nrow(all_sens), 10000)
if (is_odd_year_january()) {
expect_true(all.equal(unique(all_sens$congress), 1:current_congress()) ||
all.equal(unique(all_sens$congress), 1:(current_congress() - 1)))
} else {
expect_equal(unique(all_sens$congress), 1:current_congress())
}
# filter that dataset
sens_100s <- filter_congress(all_sens, 100:109)
expect_s3_class(sens_100s, "tbl_df")
expect_equal(nrow(sens_100s), 1025)
expect_equal(unique(sens_100s$congress), 100:109)
# can filter with number in dataset
expect_s3_class(filter_congress(sens_100s, 108), "tbl_df")
# valid congress number that isn't in the dataset
expect_s3_class(filter_congress(all_sens, 110), "tbl_df")
expect_error(filter_congress(sens_100s, 110), "Congress number .+ was not found")
# pluralization
expect_error(filter_congress(sens_100s, 110:112), "Congress numbers .+ were not found")
# ok if only some congress numbers are missing
sens_108_not112 <- filter_congress(sens_100s, 108:112)
expect_s3_class(sens_108_not112, "tbl_df")
expect_equal(nrow(sens_108_not112), 203)
})
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.