test_that("wa_option defaults render the minimal wrapper", {
expect_exact_html(
render_html(shiny.webawesome:::wa_option("Option")),
c("Option")
)
})
test_that("wa_option override render includes attrs and slots", {
expect_exact_html(
render_html(
shiny.webawesome:::wa_option(
"Option",
id = "option",
value = "a",
disabled = TRUE,
label = "Option A",
dir = "rtl",
lang = "en",
selected = TRUE,
end = "End",
start = "Start"
)
),
c(
paste0(
''
),
" Option",
' End',
' Start',
""
)
)
})
test_that("wa_option boolean args validate and render correctly", {
default_html <- render_html(shiny.webawesome:::wa_option("Option"))
for (arg_name in c("disabled", "selected")) {
tag <- do.call(
shiny.webawesome:::wa_option,
c(list("Option"), stats::setNames(list(TRUE), arg_name))
)
expect_exact_html(
render_html(tag),
c(sprintf("Option", arg_name))
)
false_tag <- do.call(
shiny.webawesome:::wa_option,
c(list("Option"), stats::setNames(list(FALSE), arg_name))
)
expect_equal(render_html(false_tag), default_html)
null_tag <- do.call(
shiny.webawesome:::wa_option,
c(list("Option"), stats::setNames(list(NULL), arg_name))
)
expect_equal(render_html(null_tag), default_html)
expect_error(
do.call(
shiny.webawesome:::wa_option,
c(list("Option"), stats::setNames(list("yes"), arg_name))
),
sprintf("`%s` must be TRUE, FALSE, or NULL.", arg_name),
fixed = TRUE
)
}
})