test_that("reactableTheme", {
expect_equal(reactableTheme(), structure(namedList(), class = "reactableTheme"))
expect_equal(
reactableTheme(cellPadding = paste0("3", "px"), style = list(color = "#fff")),
structure(list(cellPadding = "3px", style = list(color = "#fff")), class = "reactableTheme")
)
argTypes <- list(
color = "string",
backgroundColor = "string",
borderColor = "string",
borderWidth = "number",
stripedColor = "string",
highlightColor = "string",
cellPadding = "number",
style = "style",
tableStyle = "style",
headerStyle = "style",
groupHeaderStyle = "style",
tableBodyStyle = "style",
rowGroupStyle = "style",
rowStyle = "style",
rowStripedStyle = "style",
rowHighlightStyle = "style",
rowSelectedStyle = "style",
cellStyle = "style",
footerStyle = "style",
inputStyle = "style",
filterInputStyle = "style",
searchInputStyle = "style",
selectStyle = "style",
paginationStyle = "style",
pageButtonStyle = "style",
pageButtonHoverStyle = "style",
pageButtonActiveStyle = "style",
pageButtonCurrentStyle = "style"
)
makeTheme <- function(arg, value) {
do.call(reactableTheme, stats::setNames(list(value), arg))
}
for (arg in names(argTypes)) {
if (argTypes[[arg]] == "style") {
expect_equal(makeTheme(arg, list(color = "red"))[[arg]], list(color = "red"))
expect_equal(makeTheme(arg, list(color = "red", "&:hover" = list(padding = 1)))[[arg]],
list(color = "red", "&:hover" = list(padding = 1)))
expect_error(makeTheme(arg, 123), sprintf("`%s` must be a named list", arg))
} else if (argTypes[[arg]] == "number") {
expect_equal(makeTheme(arg, 34)[[arg]], 34)
expect_equal(makeTheme(arg, "22px")[[arg]], "22px")
expect_error(makeTheme(arg, NA), sprintf("`%s` must be a character string or number", arg))
} else {
expect_equal(makeTheme(arg, "#fff")[[arg]], "#fff")
expect_error(makeTheme(arg, 234), sprintf("`%s` must be a character string", arg))
}
}
})
test_that("is.reactableTheme", {
expect_true(is.reactableTheme(reactableTheme()))
expect_false(is.reactableTheme(list()))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.