describe("ggseg_atlas_repos", { it("returns tibble from r-universe", { skip_if_not_installed("vcr") vcr::use_cassette("r_universe_packages", { result <- ggseg_atlas_repos() }) expect_s3_class(result, "tbl_df") expect_true(nrow(result) > 0) expect_true("Package" %in% names(result)) }) it("filters by pattern", { skip_if_not_installed("vcr") vcr::use_cassette("r_universe_packages_filtered", { result <- ggseg_atlas_repos(pattern = "ggseg$") }) expect_s3_class(result, "tbl_df") if (nrow(result) > 0) { expect_true(all(grepl("ggseg", result$Package))) } }) }) describe("install_ggseg_atlas", { it("adds ggsegverse repo and calls pak", { pak_calls <- NULL local_mocked_bindings( repo_add = function(...) invisible(NULL), pak = function(pkg, ...) { pak_calls <<- list(pkg = pkg) invisible(NULL) }, .package = "pak" ) install_ggseg_atlas("ggsegTest") expect_equal(pak_calls$pkg, "ggsegTest") }) it("passes additional arguments to pak", { pak_calls <- NULL local_mocked_bindings( repo_add = function(...) invisible(NULL), pak = function(pkg, ...) { pak_calls <<- list(pkg = pkg, args = list(...)) invisible(NULL) }, .package = "pak" ) install_ggseg_atlas("ggsegTest", upgrade = TRUE) expect_true("upgrade" %in% names(pak_calls$args)) expect_true(pak_calls$args$upgrade) }) }) describe("install_ggseg_atlas_all", { it("installs all packages from r-universe", { pak_calls <- NULL local_mocked_bindings( ggseg_atlas_repos = function(...) { data.frame( Package = c("pkg1", "pkg2", "pkg3"), stringsAsFactors = FALSE ) } ) local_mocked_bindings( repo_add = function(...) invisible(NULL), pak = function(pkg, ...) { pak_calls <<- list(pkg = pkg) invisible(NULL) }, .package = "pak" ) install_ggseg_atlas_all() expect_equal(pak_calls$pkg, c("pkg1", "pkg2", "pkg3")) }) }) describe("installed_ggseg_atlases", { it("returns installed atlases with versions", { local_mocked_bindings( ggseg_atlas_repos = function(...) { dplyr::as_tibble(data.frame( Package = c("dplyr", "testthat", "zzz_not_installed"), Version = c("1.0.0", "3.0.0", "0.1.0"), stringsAsFactors = FALSE )) } ) result <- installed_ggseg_atlases() expect_s3_class(result, "tbl_df") expect_named(result, c("Package", "installed", "available")) expect_true(all(c("dplyr", "testthat") %in% result$Package)) expect_false("zzz_not_installed" %in% result$Package) expect_true(all(nzchar(result$installed))) }) it("returns empty tibble when no atlases installed", { local_mocked_bindings( ggseg_atlas_repos = function(...) { dplyr::as_tibble(data.frame( Package = c("zzz_fake1", "zzz_fake2"), Version = c("0.1.0", "0.2.0"), stringsAsFactors = FALSE )) } ) result <- installed_ggseg_atlases() expect_s3_class(result, "tbl_df") expect_equal(nrow(result), 0) expect_named(result, c("Package", "installed", "available")) }) })