Nothing
test_that("boj_data input validation works", {
expect_error(boj_data(1L, "FXERD01"))
expect_error(boj_data(TRUE, "FXERD01"))
expect_error(boj_data(NULL, "FXERD01"))
expect_error(boj_data(NA, "FXERD01"))
# code
expect_error(boj_data("FM08", 1L))
expect_error(boj_data("FM08", TRUE))
expect_error(boj_data("FM08", NULL))
# start_date
expect_error(boj_data("FM08", "FXERD01", start_date = TRUE))
expect_error(boj_data("FM08", "FXERD01", start_date = c("a", "b")))
# end_date
expect_error(boj_data("FM08", "FXERD01", end_date = TRUE))
expect_error(boj_data("FM08", "FXERD01", end_date = c("a", "b")))
# lang
expect_error(boj_data("FM08", "FXERD01", lang = "fr"))
})
test_that("parse_boj_data works", {
json = jsonlite::fromJSON(test_path("fixtures", "boj-data.json"), simplifyVector = FALSE)
actual = parse_boj_data(json)
expect_data_table(actual, min.rows = 1L)
expect_date(actual$date)
expect_numeric(actual$value)
expect_true(all(c("date", "key", "value", "freq") %in% names(actual)))
expect_true("FXERD01" %in% actual$key)
expect_identical(unique(actual$freq), "daily")
})
test_that("parse_boj_data handles empty response", {
json = list(RESULTSET = list())
actual = parse_boj_data(json)
expect_data_table(actual, nrows = 0L)
expect_true(all(c("date", "key", "value") %in% names(actual)))
})
test_that("boj_data follows NEXTPOSITION across pages", {
json_resp = function(body) {
httr2::response_json(body = body)
}
series = function(code) {
list(
SERIES_CODE = code,
NAME_OF_TIME_SERIES = code,
UNIT = "x",
FREQUENCY = "DAILY",
VALUES = list(SURVEY_DATES = list("20240101"), VALUES = list("1"))
)
}
httr2::local_mocked_responses(list(
json_resp(list(NEXTPOSITION = 2L, RESULTSET = list(series("A")))),
json_resp(list(NEXTPOSITION = NULL, RESULTSET = list(series("B"), series("C"))))
))
x = boj_data("FM08", c("A", "B", "C"))
expect_identical(sort(unique(x$key)), c("A", "B", "C"))
expect_identical(nrow(x), 3L)
})
test_that("boj_metadata input validation works", {
expect_error(boj_metadata(1L))
expect_error(boj_metadata(TRUE))
expect_error(boj_metadata(NULL))
expect_error(boj_metadata(NA))
expect_error(boj_metadata("FM08", lang = "fr"))
})
test_that("parse_boj_metadata works", {
json = jsonlite::fromJSON(test_path("fixtures", "boj-metadata.json"), simplifyVector = FALSE)
actual = parse_boj_metadata(json)
expect_data_table(actual, min.rows = 1L)
expect_true(all(c("code", "name", "unit", "frequency", "category") %in% names(actual)))
expect_true("FXERD01" %in% actual$code)
expect_true(all(nzchar(actual$code)))
})
test_that("parse_boj_metadata handles empty response", {
json = list(RESULTSET = list())
actual = parse_boj_metadata(json)
expect_data_table(actual, nrows = 0L)
})
test_that("parse_boj_date handles different frequencies", {
expect_identical(parse_boj_date(20250115, "daily"), as.Date("2025-01-15"))
expect_identical(parse_boj_date(202501, "monthly"), as.Date("2025-01-01"))
expect_identical(parse_boj_date(202501, "quarterly"), as.Date("2025-01-01"))
expect_identical(parse_boj_date(202503, "quarterly"), as.Date("2025-07-01"))
expect_identical(parse_boj_date(202501, "semiannual"), as.Date("2025-01-01"))
expect_identical(parse_boj_date(202502, "semiannual"), as.Date("2025-07-01"))
expect_identical(parse_boj_date(202501, "semiannual(sep)"), as.Date("2025-04-01"))
expect_identical(parse_boj_date(202502, "semiannual(sep)"), as.Date("2025-10-01"))
expect_identical(parse_boj_date(2025, "annual"), as.Date("2025-01-01"))
expect_identical(parse_boj_date(2025, "annual(mar)"), as.Date("2025-04-01"))
})
test_that("boj_freq maps correctly", {
expect_identical(boj_freq("daily"), "daily")
expect_identical(boj_freq("monthly"), "monthly")
expect_identical(boj_freq("quarterly"), "quarterly")
expect_identical(boj_freq("annual"), "annual")
expect_identical(boj_freq("annual(mar)"), "annual")
expect_identical(boj_freq("semiannual"), "semi-annual")
expect_identical(boj_freq("weekly(monday)"), "weekly")
})
test_that("assert_boj_date works", {
expect_silent(assert_boj_date(NULL))
expect_silent(assert_boj_date("202501"))
expect_silent(assert_boj_date("2025"))
expect_silent(assert_boj_date(2025L))
expect_error(assert_boj_date(TRUE))
expect_error(assert_boj_date("abc"))
expect_error(assert_boj_date(c("a", "b")))
})
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.