test_that("docsearch.json and sitemap.xml are valid for BS 3 site", {
  pkg <- local_pkgdown_site(
    meta = list(
      url = "https://example.com",
      template = list(
        bootstrap = 3,
        params = list(
          docsearch = list(
            api_key = "test-api-key",
            index_name = "test-index-name"
          )
        )
      )
    )
  )
  suppressMessages(build_docsearch_json(pkg))
  json <- path(pkg$dst_path, "docsearch.json")
  expect_true(jsonlite::validate(read_lines(json)))
  
  suppressMessages(build_sitemap(pkg))
  xml <- path(pkg$dst_path, "sitemap.xml")
  schema <- xml2::read_xml(test_path("assets/sitemaps-schema-0.9.xsd"))
  expect_true(xml2::xml_validate(xml2::read_xml(xml), schema))
})

test_that("build_search_index() has expected structure", {
  pkg <- local_pkgdown_site(
    desc = list(Version = "1.0.0"),
    meta = list(url = "https://example.com")
  )
  pkg <- pkg_add_file(pkg, "README.md", c(
    "# My Package",
    "What the pakage does"
  ))

  suppressMessages(init_site(pkg))
  suppressMessages(build_home_index(pkg))

  expect_snapshot(str(build_search_index(pkg)))
})

test_that("build sitemap only messages when it updates", {
  pkg <- local_pkgdown_site(meta = list(url = "https://example.com"))

  suppressMessages(init_site(pkg))
  suppressMessages(build_home(pkg))
  expect_snapshot({
    build_sitemap(pkg)
    build_sitemap(pkg)
  })
})

test_that("build_search() builds the expected search.json with no URL", {
  pkg <- local_pkgdown_site(desc = list(Version = "1.0.0"))
  pkg <- pkg_add_file(pkg, "README.md", c(
    "# My Package",
    "What the pakage does"
  ))

  suppressMessages(build_home(pkg))

  index <- build_search_index(pkg)
  paths <- purrr::map_chr(index, "path")
  expect_equal(paths, c("/authors.html", "/authors.html", "/index.html"))
})

test_that("sitemap excludes redirects", {
  pkg <- local_pkgdown_site(meta = list(
    url = "https://example.com",
    redirects = list(c("a.html", "b.html"))
  ))
  suppressMessages(build_redirects(pkg))
  expect_equal(get_site_paths(pkg), character())
})
