test_that("can generate three types of row", { ref <- list( list(title = "A"), list(subtitle = "B"), list(contents = c("a", "b", "c", "e", "?")) ) meta <- list(reference = ref) pkg <- as_pkgdown(test_path("assets/reference"), override = meta) expect_snapshot(data_reference_index(pkg)) }) test_that("can use markdown in title and subtitle", { ref <- list( list(title = "*A*"), list(subtitle = "*B*"), list(contents = c("a", "b", "c", "e", "?")) ) meta <- list(reference = ref) pkg <- as_pkgdown(test_path("assets/reference"), override = meta) data <- data_reference_index(pkg) expect_equal(data$rows[[1]]$title, "A") expect_equal(data$rows[[2]]$subtitle, "B") }) test_that("rows with title internal are dropped", { ref <- list( list(title = "internal", contents = c("a", "b")), list(contents = c("c", "e", "?")), list(title = "internal") ) meta <- list(reference = ref) pkg <- as_pkgdown(test_path("assets/reference"), override = meta) expect_warning(index <- data_reference_index(pkg), NA) expect_equal(length(index$rows), 1) }) test_that("duplicate entries within a group is dropped", { ref <- list( list(contents = c("a", "b", "a", "a")), list(contents = c("b", "c", "?", "e")) ) meta <- list(reference = ref) pkg <- as_pkgdown(test_path("assets/reference"), override = meta) index <- data_reference_index(pkg) expect_equal(length(index$rows[[1]]$topics), 2) expect_equal(length(index$rows[[2]]$topics), 4) }) test_that("warns if missing topics", { ref <- list( list(contents = c("a", "b")) ) meta <- list(reference = ref) pkg <- as_pkgdown(test_path("assets/reference"), override = meta) expect_snapshot(data_reference_index(pkg), error = TRUE) }) test_that("default reference includes all functions", { ref <- default_reference_index(test_path("assets/reference")) expect_equal(ref[[1]]$contents, paste0("`", c(letters[1:3], "e", "?"), "`")) }) test_that("errors well when a content entry is empty", { meta <- yaml::yaml.load( "reference:\n- title: bla\n contents:\n - aname\n - ") pkg <- as_pkgdown(test_path("assets/reference"), override = meta) expect_snapshot_error(build_reference_index(pkg)) }) test_that("errors well when a content entry is not a character", { local_edition(3) meta <- yaml::yaml.load( "reference:\n- title: bla\n contents:\n - aname\n - N") pkg <- as_pkgdown(test_path("assets/reference"), override = meta) expect_snapshot(build_reference_index(pkg), error = TRUE) }) test_that("errors well when a content is totally empty", { local_edition(3) meta <- yaml::yaml.load( "reference:\n- title: bla\n contents: ~") pkg <- as_pkgdown(test_path("assets/reference"), override = meta) expect_snapshot(build_reference_index(pkg), error = TRUE) }) test_that("errors well when a content entry refers to a not installed package", { skip_if_not_installed("cli", "3.1.0") local_edition(3) meta <- yaml::yaml.load( "reference:\n- title: bla\n contents:\n - notapackage::lala") pkg <- as_pkgdown(test_path("assets/reference"), override = meta) expect_snapshot(build_reference_index(pkg), error = TRUE) }) test_that("errors well when a content entry refers to a non existing function", { local_edition(3) meta <- yaml::yaml.load( "reference:\n- title: bla\n contents:\n - rlang::lala") pkg <- as_pkgdown(test_path("assets/reference"), override = meta) expect_snapshot(build_reference_index(pkg), error = TRUE) }) test_that("can exclude topics", { pkg <- local_pkgdown_site(test_path("assets/reference"), meta = " reference: - title: Exclude contents: [a, b, -a] - title: Exclude multiple contents: [a, b, c, -matches('a|b')] - title: Everything else contents: [a, c, e, '?'] ") ref <- data_reference_index(pkg) # row 1 is the title row expect_equal(length(ref$rows[[2]]$topics), 1) expect_equal(ref$rows[[2]]$topics[[1]]$aliases, "b()") expect_equal(length(ref$rows[[4]]$topics), 1) expect_equal(ref$rows[[4]]$topics[[1]]$aliases, "c()") }) test_that("can use a topic from another package", { meta <- list(reference = list(list( title = "bla", contents = c("a", "b", "c", "e", "?", "rlang::is_installed()", "bslib::bs_add_rules") ))) pkg <- as_pkgdown(test_path("assets/reference"), override = meta) expect_snapshot(data_reference_index(pkg)) }) test_that("can use a selector name as a topic name", { meta <- list(reference = list(list( title = "bla", contents = c("matches", "matches('A')") ))) pkg <- as_pkgdown(test_path("assets/reference-selector"), override = meta) expect_snapshot(data_reference_index(pkg)) })