Nothing
describe("metaRender", isolate({
it("basically works", {
expect_identical(
shiny::renderText({ paste("foo", "bar") })(),
"foo bar"
)
expect_identical(
metaRender(shiny::renderText, { paste("foo", "bar") })(),
"foo bar"
)
expect_equal(
unclass(withMetaMode({
metaRender(shiny::renderText, { paste("foo", "bar") })()
})),
quote(
paste("foo", "bar")
)
)
expect_equal(
unclass(withMetaMode({
metaRender2(shiny::renderText, metaExpr({ paste("foo", "bar") }))()
})),
quote(
paste("foo", "bar")
)
)
})
it("works with quoted expr", {
x <- local({
a <- "foo"
b <- "bar"
env <- environment()
list(
expr0 = quote({ paste(a, b) }),
expr1 = quote({ paste(..(a), ..(b)) }),
expr2 = quote(metaExpr({ paste(..(a), ..(b)) })),
env = env
)
})
expect_identical(
shiny::renderText(expr = x$expr0, env = x$env, quoted = TRUE)(),
"foo bar"
)
expect_equal(
unclass(withMetaMode({
metaRender(shiny::renderText, expr = x$expr1, env = x$env, quoted = TRUE)()
})),
quote(
paste("foo", "bar")
)
)
expect_equal(
unclass(withMetaMode({
metaRender2(shiny::renderText, expr = x$expr2, env = x$env, quoted = TRUE)()
})),
quote(
paste("foo", "bar")
)
)
})
it("works with a render pipeline", {
output <- list()
data <- metaReactive({ dplyr::sample_n(diamonds, 1000) })
output$plot <- metaRender(renderPlot, {
ggplot(..(data()), aes(carat, price)) + geom_point()
})
x1 <- expandChain(
"# top-level comment",
output$plot()
)
x2 <- expandChain(
"# top-level comment",
output[["plot"]]()
)
expect_snapshot_output(cran = TRUE, formatCode(x1))
expect_snapshot_output(cran = TRUE, formatCode(x2))
# TODO: it would be nice to have an informative error here
# https://github.com/rstudio/shinymeta/issues/49
#expect_error(expandChain(output$foo()), regexp = "output\\$foo")
})
it("removes curly brackets when appropriate", {
mr1 <- metaReactive({1 + 1})
code <- expandChain(invisible(mr1()))
expect_true(formatCode(code) == "mr1 <- 1 + 1")
mr2 <- metaReactive({
..(quote({1 + 1}))
})
code <- expandChain(invisible(mr2()))
expect_true(formatCode(code) == "mr2 <- 1 + 1")
})
it("uses correct scopes", {
outer_var <- 100
renderer <- metaRender(renderText, {
expect_identical(outer_var, 100)
outer_var <<- outer_var + 1
})
renderer()
expect_identical(outer_var, 101)
mr <- metaReactive({
expect_identical(outer_var, 101)
outer_var <<- outer_var + 1
})
mr()
expect_identical(outer_var, 102)
renderer <- metaRender2(renderText, {
expect_identical(outer_var, 102)
outer_var <<- outer_var + 1
metaExpr(outer_var <<- outer_var + 1)
})
renderer()
expect_identical(outer_var, 104)
mr <- metaReactive2({
expect_identical(outer_var, 104)
outer_var <<- outer_var + 1
metaExpr(outer_var <<- ..(outer_var + 1))
})
mr()
expect_identical(outer_var, 106)
outer_var <- 104
res <- withMetaMode(mr())
expect_identical(outer_var, 105)
expect_equal(unclass(res), quote(outer_var <<- 106))
})
}))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.