test_that("parse_onb_data handles empty data", { xml = xml2::read_xml("") actual = parse_onb_data(xml) expect_data_table(actual, nrows = 0L) expect_names(names(actual), identical.to = c("date", "key", "value", "freq", "title")) expect_double(actual$value) }) test_that("parse_onb_metadata keeps the scalar fields", { xml = xml2::read_xml(test_path("fixtures", "onb-metadata.xml")) actual = parse_onb_metadata(xml) expect_data_table(actual, nrows = 1L) expect_names( names(actual), identical.to = c( "title", "region", "unit", "comment", "classification", "breaks", "frequency", "last_update", "source", "lag" ) ) expect_identical(actual$title, "Loans to euro area residents - total") expect_identical(actual$frequency, "month") # "-" stands in for a missing value expect_identical(actual$region, NA_character_) }) test_that("parse_onb_metadata drops however many entries it holds", { release = function(n) { paste0( "t", strrep("d", n), "" ) } # a single used to survive the scalar filter and then expand into its children for (n in 0:2) { actual = parse_onb_metadata(xml2::read_xml(release(n))) expect_data_table(actual, nrows = 1L) expect_names(names(actual), identical.to = "title") } })