tests/testthat/test-html-render.R

test_that("html_render() works properly", {

  # Plain HTML
  expect_string(
    html_render(tagList(
      tags$h1("Hello World!"),
      tags$p(stri_rand_lipsum(1))
    ))
  )

  # HTML with dependency
  dep_name <- glue("autoreload-{pkg_vers()}")
  dep_dir  <- path("assets", dep_name)
  with_tempdir({
    dir_create(dep_dir)
    expect_string(
      html_render(
        tagList(
          tags$head(autoreload_assets()),
          tags$h1("Hello World!"),
          tags$p(stri_rand_lipsum(1))
        ),
        libs = "assets"
      ),
      pattern = "autoreload\\.js"
    )
    expect_directory_exists(dep_dir)
    expect_true(file_exists(path(dep_dir, "autoreload.js")))
  })

  # HTML with existing dependency
  with_tempdir({
    dir_create(dep_dir)
    expect_string(
      html_render(
        tagList(
          tags$head(autoreload_assets()),
          tags$h1("Hello World!"),
          tags$p(stri_rand_lipsum(1))
        ),
        libs = "assets",
        existing = dep_name
      ),
      pattern = "autoreload\\.js"
    )
    expect_false(file_exists(path(dep_dir, "autoreload.js")))
  })

  # Fragment
  expect_string(
    html_render(
      tagList(
        tags$h1("Hello World!"),
        tags$p(stri_rand_lipsum(1))
      ),
      fragment = TRUE
    ),
    pattern = "^<h1>"
  )

})

test_that("html_render_dependencies() works", {

  with_tempdir({
    html_render_dependencies(
      deps = list(
        html_dependency(
          name    = "autoreload",
          version = pkg_vers(),
          src     = "js/autoreload",
          script  = "autoreload.js",
          package = "webtools"
        )
      ),
      libs = getwd(),
      existing = NULL
    )
    expect_file_exists(glue("autoreload-{pkg_vers()}/autoreload.js"))
  })

  with_tempdir({
    expect_error(
      html_render_dependencies(
        deps = list(
          html_dependency(
            name    = "autoreload",
            version = pkg_vers(),
            src     = "js/autoreload",
            script  = "autoreload.js",
            package = "webtools"
          )
        ),
        libs = getwd(),
        existing = glue("autoreload-{pkg_vers()}")
      )
    )
  })

  with_tempdir({
    expect_list(
      html_render_dependencies(
        deps = list(
          html_dependency(
            name    = "autoreload",
            version = pkg_vers(),
            src     = c(href = "https://example.com"),
            script  = "autoreload.js"
          )
        ),
        libs = getwd(),
        existing = NULL
      ),
      types = "html_dependency"
    )
  })

})

test_that("html_copy_dependency() works", {

  with_tempdir({
    html_copy_dependency(
      dep = html_dependency(
        name    = "autoreload",
        version = pkg_vers(),
        src     = "js/autoreload",
        script  = "autoreload.js",
        package = "webtools"
      ),
      output_dir = getwd()
    )
    expect_file_exists(glue("autoreload-{pkg_vers()}/autoreload.js"))
  })

  with_tempdir({
    html_copy_dependency(
      dep = html_dependency(
        name    = "autoreload",
        version = pkg_vers(),
        src     = "js/autoreload",
        package = "webtools",
        all_files = FALSE
      ),
      output_dir = getwd()
    )
    expect_false(file_exists(glue("autoreload-{pkg_vers()}/autoreload.js")))
  })

  with_tempdir({
    html_copy_dependency(
      dep = html_dependency(
        name    = "autoreload",
        version = pkg_vers(),
        src     = "js/autoreload",
        package = "webtools",
        all_files = FALSE
      ),
      output_dir = getwd()
    )
    expect_false(file_exists(glue("autoreload-{pkg_vers()}/autoreload.js")))
  })

  with_tempdir({
    html_copy_dependency(
      dep = html_dependency(
        name    = "autoreload",
        version = pkg_vers(),
        src     = "js/autoreload",
        script  = list(
          "autoreload.js",
          list(src = "autoreload.js", type = "module")
        ),
        package = "webtools",
        all_files = FALSE
      ),
      output_dir = getwd()
    )
    expect_file_exists(glue("autoreload-{pkg_vers()}/autoreload.js"))
  })

  with_tempdir({
    expect_error(
      html_copy_dependency(
        dep = html_dependency(
          name    = "dummy",
          version = pkg_vers(),
          src     = c(href = "dummy"),
          script  = "dummy.js"
        ),
        output_dir = getwd(),
        must_work = TRUE
      )
    )
    expect_error(
      html_copy_dependency(
        dep = html_dependency(
          name    = "dummy",
          version = pkg_vers(),
          src     = c(file = "dummy"),
          script  = "dummy.js"
        ),
        output_dir = getwd()
      ),
      NA
    )
    expect_error(
      html_copy_dependency(
        dep = html_dependency(
          name    = "dummy",
          version = pkg_vers(),
          src     = c(file = "dummy"),
          script  = "dummy.js",
          all_files = FALSE
        ),
        output_dir = getwd()
      )
    )
    expect_class(
      html_copy_dependency(
        dep = html_dependency(
          name    = "dummy",
          version = pkg_vers(),
          src     = c(href = "file"),
          script  = "dummy.js"
        ),
        output_dir = getwd(),
        must_work = FALSE
      ),
      "html_dependency"
    )
  })

  expect_error(
    html_copy_dependency(
      dep = html_dependency(
        name    = "autoreload",
        version = pkg_vers(),
        src     = "js/autoreload",
        script  = "autoreload.js",
        package = "webtools"
      ),
      output_dir = "/",
      must_work = TRUE
    )
  )

})
tjpalanca/webtools documentation built on Dec. 23, 2021, 11 a.m.