test_that("export writes data, coverage and a provenance sidecar", { dir <- tempfile("export") dir.create(dir) on.exit(unlink(dir, recursive = TRUE)) path <- file.path(dir, "met.csv") x <- btg_get_data(force = c("metropolitan", "kent")) files <- btg_export(x, path) expect_setequal(basename(files), c("met.csv", "met.json", "met-coverage.csv")) expect_true(all(file.exists(files))) back <- utils::read.csv(path, stringsAsFactors = FALSE) expect_equal(nrow(back), 2) expect_equal(back$ratio, x$data$ratio) cov <- utils::read.csv(file.path(dir, "met-coverage.csv"), stringsAsFactors = FALSE) expect_equal(nrow(cov), 24) prov <- jsonlite::read_json(file.path(dir, "met.json"), simplifyVector = TRUE) expect_equal(prov$release, x$metadata$release) expect_equal(prov$payload_sha256$data, x$metadata$files$data$sha256) expect_equal(prov$selection$force, c("kent", "metropolitan")) expect_equal(prov$rows, 2) expect_match(prov$citation, "Open Government Licence") expect_error(btg_export(x, path), "File exists") expect_silent(btg_export(x, path, overwrite = TRUE)) national <- btg_export(btg_get_data("national_year"), file.path(dir, "national.csv")) expect_length(national, 2) prov <- jsonlite::read_json(file.path(dir, "national.json"), simplifyVector = TRUE) expect_null(prov$payload_sha256$coverage) expect_error(btg_export(x, file.path(dir, "met.txt")), "end in .csv") expect_error(btg_export(x$data, path), "documented dataset") }) test_that("the glossary defines the package's terms", { g <- btg_glossary() expect_true(all(c("ratio", "allocation range", "eligible", "rank", "coverage", "release", "saved view") %in% g$term)) expect_false(anyDuplicated(g$term) > 0) expect_true(all(nchar(g$definition) > 40)) })