skip_if_offline(host = "www.opendata.nhs.scot")
test_that("returns data in the expected format", {
gp_list_apr_2021 <- "a794d603-95ab-4309-8c92-b48970478c14"
# without query
data <- get_resource(res_id = gp_list_apr_2021, rows = 1)
expect_s3_class(data, "tbl_df")
expect_length(data, 15)
expect_equal(nrow(data), 1)
expect_named(data)
# with query
data_q <- get_resource(
gp_list_apr_2021,
row_filters = list(PracticeCode = 10002),
col_select = c("PracticeCode", "AddressLine1")
)
expect_named(data_q, c("PracticeCode", "AddressLine1"))
expect_equal(data_q[["PracticeCode"]], 10002)
expect_no_warning(get_resource("3e86b6fb-2062-4f05-8f4d-0bb001155d64"))
})
test_that("returns data with row specifications", {
gp_list_apr_2021 <- "a794d603-95ab-4309-8c92-b48970478c14"
expect_equal(nrow(get_resource(res_id = gp_list_apr_2021, rows = 926)), 926)
expect_equal(nrow(get_resource(res_id = gp_list_apr_2021, rows = 999)), 926) %>%
expect_warning()
})
test_that("returns data for multiple filters", {
data_row_limit <- get_resource(
res_id = "e4985a62-9d59-4e71-8800-3f7ca29ffe0c",
col_select = c("GPPractice", "DMDCode"),
row_filters = list("GPPractice" = c("80005", "80202")),
rows = 100
)
expect_s3_class(data_row_limit, "tbl_df")
expect_equal(nrow(data_row_limit), 100)
expect_named(data_row_limit, c("GPPractice", "DMDCode"))
data_full <- get_resource(
res_id = "e4985a62-9d59-4e71-8800-3f7ca29ffe0c",
col_select = c("GPPractice", "DMDCode", "PrescribedType"),
row_filters = list(
"GPPractice" = c("80005", "80202"),
"PrescribedType" = "AMP"
)
)
expect_s3_class(data_full, "tbl_df")
expect_equal(nrow(data_full), 1108)
expect_named(data_full, c("GPPractice", "DMDCode", "PrescribedType"))
expect_length(unique(data_full$GPPractice), 2)
expect_length(unique(data_full$PrescribedType), 1)
})
test_that("returns data for multiple filters in mixed format", {
delays <- get_resource(
res_id = "fd354e4b-6211-48ba-8e4f-8356a5ed4215",
col_select = c("MonthOfDelay", "ReasonForDelay", "NumberOfDelayedBedDays"),
row_filters = list("HBT" = "S08000031", MonthOfDelay = c(201607:201707))
)
expect_s3_class(delays, "tbl_df")
expect_equal(nrow(delays), 195)
expect_named(delays, c("MonthOfDelay", "ReasonForDelay", "NumberOfDelayedBedDays"))
expect_length(unique(delays$MonthOfDelay), 13)
})
test_that("returns data for multiple filters for all columns", {
prescriptions <- get_resource(
res_id = "d1fbede3-98c4-436e-9e75-2ed807a36075",
row_filters = list(
"HBT" = "S08000015",
"DMDCode" = c("940711000001101", "1004511000001101", "1014311000001109")
)
)
expect_s3_class(prescriptions, "tbl_df")
expect_equal(nrow(prescriptions), 114)
expect_named(prescriptions, c(
"HBT",
"GPPractice",
"DMDCode",
"BNFItemCode",
"BNFItemDescription",
"PrescribedType",
"NumberOfPaidItems",
"PaidQuantity",
"GrossIngredientCost",
"PaidDateMonth"
))
expect_length(unique(prescriptions$GPPractice), 55)
expect_setequal(
prescriptions$DMDCode,
c("940711000001101", "1004511000001101", "1014311000001109")
)
expect_setequal(prescriptions$HBT, "S08000015")
})
test_that("errors on invalid filters", {
# non-existent column in row_filters
expect_error(
delays <- get_resource(
res_id = "fd354e4b-6211-48ba-8e4f-8356a5ed4215",
col_select = c("MonthOfDelay", "ReasonForDelay", "NumberOfDelayedBedDays"),
row_filters = c("HBT" = "S08000031", "Month" = 201607)
),
regexp = "row_filters: invalid value"
)
# non-existent column in col_select
expect_error(
delays <- get_resource(
res_id = "fd354e4b-6211-48ba-8e4f-8356a5ed4215",
col_select = c("Month", "ReasonForDelay", "NumberOfDelayedBedDays"),
row_filters = c("HBT" = "S08000031", "MonthOfDelay" = 201607)
),
regexp = "col_select: invalid value"
)
})
test_that("We can filter data with `Sex = 'All'`", {
pops <- get_resource(
res_id = "27a72cc8-d6d8-430c-8b4f-3109a9ceadb1",
row_filters = list("Sex" = "All"),
col_select = c("Year", "HB", "AllAges", "Sex")
)
expect_s3_class(pops, "tbl_df")
expect_equal(nrow(pops), 645)
expect_named(pops, c(
"Year",
"HB",
"AllAges",
"Sex"
))
expect_length(unique(pops$HB), 15)
expect_setequal(pops$Sex, "All")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.