describe("configure_logger()", {
it("works with missing config fields", {
mockery::stub(configure_logger, "config::get", list())
expect_message(configure_logger())
mockery::stub(configure_logger, "config::get", list(rhino_log_level = "INFO"))
expect_message(configure_logger())
mockery::stub(configure_logger, "config::get", list(rhino_log_file = "my.log"))
expect_message(configure_logger())
mockery::stub(
configure_logger,
"config::get",
list(rhino_log_level = "INFO", rhino_log_file = "my.log")
)
expect_silent(configure_logger())
})
})
describe("normalize_main()", {
it("handles a Shiny module", {
main <- list(
ui = function(id) shiny::tags$div("test"),
server = function(id) {
shiny::moduleServer(id, function(input, output, session) {})
}
)
wrapped <- normalize_main(main, is_module = TRUE)
expect_identical(names(formals(wrapped$ui)), c("request"))
expect_identical(names(formals(wrapped$server)), c("input", "output", "session"))
})
})
describe("normalize_ui()", {
it("handles UI defined as a Shiny module", {
ui <- function(id) shiny::tags$div("test")
wrapped <- normalize_ui(ui, is_module = TRUE)
expect_identical(wrapped("request"), ui("app"))
})
it("handles UI defined as a tag", {
ui <- shiny::tags$div("test")
wrapped <- normalize_ui(ui)
expect_identical(wrapped("request"), ui)
})
it("handles UI defined as a function without parameters", {
ui <- function() shiny::tags$div("test")
wrapped <- normalize_ui(ui)
expect_identical(wrapped("request"), ui())
})
it("handles UI defined as a function with a request parameter", {
ui <- function(request) shiny::tags$div(request)
wrapped <- normalize_ui(ui)
expect_identical(wrapped("request"), ui("request"))
})
})
describe("normalize_server()", {
it("handles server defined as a Shiny module", {
server <- function(id) {
shiny::moduleServer(id, function(input, output, session) {})
}
wrapped <- normalize_server(server, is_module = TRUE)
expect_identical(names(formals(wrapped)), c("input", "output", "session"))
})
it("handles server wihout session paramter", {
server <- function(input, output) {}
wrapped <- normalize_server(server)
expect_identical(names(formals(wrapped)), c("input", "output", "session"))
})
it("handles server with session parameter", {
server <- function(input, output, session) {}
wrapped <- normalize_server(server)
expect_identical(names(formals(wrapped)), c("input", "output", "session"))
})
})
describe("warn_on_error()", {
it("catches an error and prints it with an appended message", {
expect_message(
warn_on_error(stop("some_error"), "some_message"),
"some_message: some_error"
)
})
})
describe("with_head_tags()", {
it("attaches a head tag to UI", {
ui <- function(request) shiny::tags$div("test")
wrapped <- with_head_tags(ui)
first_tag <- wrapped("request")[[1]]$name
expect_identical(first_tag, "head")
})
})
describe("fix_server()", {
it("ensures server uses curly braces and has source reference information attached", {
body_uses_curly_braces <- function(f) {
identical(body(f)[[1]], rlang::sym("{"))
}
server <- eval(parse(
text = "function(input, output, session) 42",
keep.source = FALSE
))
fixed <- fix_server(server)
expect_identical(fixed(), server())
expect_false(body_uses_curly_braces(server))
expect_true(body_uses_curly_braces(fixed))
expect_false("srcref" %in% names(attributes(server)))
expect_true("srcref" %in% names(attributes(fixed)))
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.