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
)
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.