tests/testthat/test-html-build.R

test_that("html_tags() works", {

  id <- stri_rand_strings(1, 10)
  result <- html_tags(div(id = id), autoreload_assets())
  expect_class(result, "shiny.tag.list")
  render <- html_render(result)
  expect_string(render, fixed = "autoreload.js")
  expect_string(render, fixed = id)


})

test_that("html_template() works properly", {

  # `htmltools` engine
  content <- stri_rand_strings(1, 10)
  result <- html_template(
    pkg_inst("templates/document.html"),
    content = content
  )
  expect_class(result, "shiny.tag.list")
  render <- html_render(result)
  expect_string(render, fixed = "autoreload.js")
  expect_string(render, fixed = content)

  # `whisker` engine
  html_tags <- map(names(tags), ~list(name = .))
  result <- html_mustache(
    pkg_inst("templates/whisker.html"),
    tags   = html_tags,
    assets = autoreload_assets()
  )
  expect_class(result, "shiny.tag.list")
  render <- html_render(result)
  expect_string(render, fixed = "autoreload.js")
  expect_string(render, fixed = "linearGradient")

  # Don't use names that are also tags
  title <- "title"
  expect_error(
    html_template(
      pkg_inst("templates/fragment.html"),
      title = title,
      subtitle = "subtitle"
    ),
    "use these symbols"
  )

})

test_that("html_tags() can nest html_template()", {

  page_title <- stri_rand_strings(1, 10)
  result <- html_tags(
    autoreload_assets(),
    div(
      h1("Pre-title"),
      html_template(
        pkg_inst("templates/fragment.html"),
        title    = page_title,
        subtitle = "subtitle",
        autoreload_assets = autoreload_assets
      )
    )
  )
  expect_class(result, "shiny.tag.list")
  render <- html_render(result)
  expect_string(render, fixed = "autoreload.js")
  expect_string(render, fixed = page_title)

})

test_that("html_template() can nest html_tags()", {

  page_title <- stri_rand_strings(1, 10)
  result <- html_template(
    file = pkg_inst("templates/fragment.html"),
    title = html_tags(em(page_title), autoreload_assets()),
    subtitle = "subtitle"
  )
  expect_class(result, "shiny.tag.list")
  render <- html_render(result)
  expect_string(render, fixed = "autoreload.js")
  expect_string(render, fixed = page_title)

})


test_that("html_script() works properly", {

  result <- html_script(
    file = pkg_inst("js/autoreload/main.js"),
    libs = "assets",
    version  = "1.0.0"
  )
  expect_equal(result$name, "script")
  expect_string(result$children[[1]], fixed = "assets/autoreload-1.0.0")

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