getClasses <- function(tag) {
unlist(strsplit(htmltools::tagGetAttribute(tag, "class"), " "))
}
clsName <- "shinyjs-hide"
test_that("hidden fails on plain text", {
expect_error(("abc"), "Invalid shiny tag")
})
test_that("hidden works on simple div", {
tag <- (shiny::div("abc"))
expect_true(clsName %in% getClasses(tag))
})
test_that("hidden works on complex div", {
tag <- (shiny::div(shiny::span("abc")))
expect_true(clsName %in% getClasses(tag))
})
test_that("hidden works when div already contains a class", {
tag <- (shiny::div("abc", class = "test"))
expect_true(clsName %in% getClasses(tag))
})
test_that("hidden errors when one of multiple tags is not a tag", {
expect_error((shiny::p("abc"), "abc"), "Invalid shiny tag")
expect_error((list(shiny::p("abc"), "abc")), "Invalid shiny tag")
expect_error((shiny::tagList(shiny::p("abc"), "abc")), "Invalid shiny tag")
})
test_that("hidden works when given multiple tags", {
res <- (shiny::p("abc"), shiny::span("abc"))
expect_equal(length(res), 2)
expect_true(clsName %in% getClasses(res[[1]]))
expect_true(clsName %in% getClasses(res[[2]]))
})
test_that("hidden works when given list", {
res <- (list(shiny::p("abc"), shiny::span("abc")))
expect_equal(length(res), 2)
expect_true(clsName %in% getClasses(res[[1]]))
expect_true(clsName %in% getClasses(res[[2]]))
})
test_that("hidden works when given tagList", {
res <- (shiny::tagList(shiny::p("abc"), shiny::span("abc")))
expect_equal(length(res), 2)
expect_true(clsName %in% getClasses(res[[1]]))
expect_true(clsName %in% getClasses(res[[2]]))
})
test_that("hidden can accept a list with trailing comma", {
res <- (shiny::tagList(shiny::p("abc"), shiny::span("abc")),)
expect_equal(length(res), 2)
})
test_that("hidden on a nested element only hides the top-level element", {
res <- (shiny::div("one", shiny::div("two")))
exp <- shiny::div("one", class = clsName, shiny::div("two"))
expect_identical(res, exp)
})
test_that("hidden differentiates between list and tagList", {
res_list <- (list(shiny::div(), shiny::span()))
res_tagList <- (shiny::tagList(shiny::div(), shiny::span()))
exp_list <- list(shiny::div(class = clsName), shiny::span(class = clsName))
exp_tagList <- shiny::tagList(shiny::div(class = clsName), shiny::span(class = clsName))
expect_false(identical(exp_list, exp_tagList))
expect_identical(res_list, exp_list)
expect_identical(res_tagList, exp_tagList)
})
test_that("hidden works when htmlDependency is attached", {
dep1 <- htmltools::htmlDependency(name = "foo", src = "", version = "1.0")
res1 <- (shiny::tagList(shiny::div(), dep1))
exp1 <- shiny::tagList(shiny::div(class = clsName), dep1)
expect_identical(res1, exp1)
dep2 <- htmltools::htmlDependency(name = "foo2", src = "", version = "1.0")
res2 <- (shiny::tagList(dep1, shiny::div(), dep2))
exp2 <- shiny::tagList(dep1, shiny::div(class = clsName), dep2)
expect_identical(res2, exp2)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.