Nothing
# repro_chunk ----
test_that("Reactive code chunk is correctly extracted", {
test_server <- function(input, output, session) {
iris_filt <- reactive(iris[with(iris, Sepal.Width > input$min_width), ])
summary_tbl <- reactive({
aggregate(
Sepal.Width ~ Species,
data = iris_filt(),
FUN = get(input$summary_fn)
)
})
}
shiny::testServer(
test_server,
expr = {
session$setInputs(min_width = 3.5, summary_fn = "median")
repro_code <- repro_chunk(summary_tbl)
expect_s7_class(repro_code, Repro)
expect_identical(
repro_code@code,
list(str2lang("aggregate(Sepal.Width ~ Species, data = iris_filt, FUN = get(\"median\"))"))
)
expect_identical(
repro_code@prerequisites,
list(
iris_filt = list(
str2lang("iris_filt <- iris[with(iris, Sepal.Width > 3.5), ]")
)
)
)
}
)
})
# reprex reactives ----
test_that("Able to extract reactive expression code from a standard reactive", {
test_server <- function(input, output, session) {
iris_filt <- reactive(iris[with(iris, Sepal.Width > input$min_width), ])
summary_tbl <- reactive({
aggregate(
Sepal.Width ~ Species,
data = iris_filt(),
FUN = get(input$summary_fn)
)
})
}
shiny::testServer(
test_server,
expr = {
session$setInputs(min_width = 3.5, summary_fn = "median")
repro_code <- reprex_reactive(summary_tbl)
expect_identical(
repro_code,
paste(
"iris_filt <- iris[with(iris, Sepal.Width > 3.5), ]",
"",
"aggregate(Sepal.Width ~ Species, data = iris_filt, FUN = get(\"median\"))",
sep = "\n"
)
)
}
)
})
test_that("Able to extract reactive expression code from bindCache", {
test_server <- function(input, output, session) {
iris_filt <- reactive(iris[with(iris, Sepal.Width > input$min_width), ]) |>
bindCache(input$min_width)
summary_tbl <- reactive({
aggregate(
Sepal.Width ~ Species,
data = iris_filt(),
FUN = get(input$summary_fn)
)
}) |>
bindCache(iris_filt(), input$summary_fn)
}
shiny::testServer(
test_server,
expr = {
session$setInputs(min_width = 3.5, summary_fn = "median")
repro_code <- reprex_reactive(summary_tbl)
expect_identical(
repro_code,
paste(
"iris_filt <- iris[with(iris, Sepal.Width > 3.5), ]",
"",
"aggregate(Sepal.Width ~ Species, data = iris_filt, FUN = get(\"median\"))",
sep = "\n"
)
)
}
)
})
test_that("Able to extract reactive expression code from bindEvent", {
test_server <- function(input, output, session) {
iris_filt <- reactive(iris[with(iris, Sepal.Width > input$min_width), ]) |>
bindEvent(input$min_width)
summary_tbl <- reactive({
aggregate(
Sepal.Width ~ Species,
data = iris_filt(),
FUN = get(input$summary_fn)
)
}) |>
bindEvent(iris_filt(), input$summary_fn)
}
shiny::testServer(
test_server,
expr = {
session$setInputs(min_width = 3.5, summary_fn = "median")
repro_code <- reprex_reactive(summary_tbl)
expect_identical(
repro_code,
paste(
"iris_filt <- iris[with(iris, Sepal.Width > 3.5), ]",
"",
"aggregate(Sepal.Width ~ Species, data = iris_filt, FUN = get(\"median\"))",
sep = "\n"
)
)
}
)
})
test_that("Able to extract reactive expression code from bindEvent and bindCache", {
test_server <- function(input, output, session) {
iris_filt <- reactive(iris[with(iris, Sepal.Width > input$min_width), ]) |>
bindCache(iris_filt(), input$summary_fn) |>
bindEvent(input$min_width)
summary_tbl <- reactive({
aggregate(
Sepal.Width ~ Species,
data = iris_filt(),
FUN = get(input$summary_fn)
)
}) |>
bindCache(iris_filt(), input$summary_fn) |>
bindEvent(iris_filt(), input$summary_fn)
}
shiny::testServer(
test_server,
expr = {
session$setInputs(min_width = 3.5, summary_fn = "median")
repro_code <- reprex_reactive(summary_tbl)
expect_identical(
repro_code,
paste(
"iris_filt <- iris[with(iris, Sepal.Width > 3.5), ]",
"",
"aggregate(Sepal.Width ~ Species, data = iris_filt, FUN = get(\"median\"))",
sep = "\n"
)
)
}
)
})
test_that("Able to extract reactive expression code from eventReactive", {
test_server <- function(input, output, session) {
iris_filt <- eventReactive(input$min_width, iris[with(iris, Sepal.Width > input$min_width), ])
summary_tbl <- eventReactive(list(iris_filt(), input$summary_fn), {
aggregate(
Sepal.Width ~ Species,
data = iris_filt(),
FUN = get(input$summary_fn)
)
})
}
shiny::testServer(
test_server,
expr = {
session$setInputs(min_width = 3.5, summary_fn = "median")
repro_code <- reprex_reactive(summary_tbl)
expect_identical(
repro_code,
paste(
"iris_filt <- iris[with(iris, Sepal.Width > 3.5), ]",
"",
"aggregate(Sepal.Width ~ Species, data = iris_filt, FUN = get(\"median\"))",
sep = "\n"
)
)
}
)
})
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.