test_that("wa_callout defaults render the minimal wrapper", { expect_exact_html( render_html(shiny.webawesome:::wa_callout("Heads up")), c("Heads up") ) }) test_that("wa_callout override render includes attrs and icon slot", { expect_exact_html( render_html( shiny.webawesome:::wa_callout( "Heads up", id = "callout", appearance = "outlined", dir = "rtl", lang = "en", size = "large", variant = "danger", icon = "Icon" ) ), c( paste0( '' ), " Heads up", ' Icon', "" ) ) }) test_that("wa_callout enum args validate exactly", { enum_cases <- list( list( arg = "appearance", attr = "appearance", valid = "plain", invalid = "glass" ), list(arg = "size", attr = "size", valid = "small", invalid = "tiny"), list(arg = "variant", attr = "variant", valid = "success", invalid = "info") ) for (case in enum_cases) { valid_tag <- do.call( shiny.webawesome:::wa_callout, c(list("Heads up"), stats::setNames(list(case$valid), case$arg)) ) expect_exact_html( render_html(valid_tag), c( sprintf( 'Heads up', case$attr, case$valid ) ) ) expect_error( do.call( shiny.webawesome:::wa_callout, c(list("Heads up"), stats::setNames(list(case$invalid), case$arg)) ), sprintf("`%s` must be one of ", case$arg), fixed = TRUE ) } })