mirror of
https://github.com/rstudio/shiny.git
synced 2026-04-29 03:00:45 -04:00
63 lines
2.6 KiB
R
63 lines
2.6 KiB
R
test_that("Inputs and values in query string", {
|
|
|
|
restore_context <- function(...) {
|
|
RestoreContext$new(paste0(...))$asList()
|
|
}
|
|
|
|
for (input_str in c("_inputs_", "_inputs_=")) {
|
|
for (value_str in c("_values_", "_values_=")) {
|
|
|
|
# Normal format
|
|
vals <- restore_context("?", input_str, "&a=1&b=2&", value_str, "&x=3")
|
|
expect_true(contents_identical(vals$input, list(a=1L, b=2L)))
|
|
expect_identical(as.list(vals$values), list(x=3L))
|
|
|
|
# No leading '?', trailing '&', and values before inputs
|
|
vals <- restore_context(value_str, "&x=3&", input_str, "&a=1&b=2&")
|
|
expect_true(contents_identical(vals$input, list(a=1L, b=2L)))
|
|
expect_identical(as.list(vals$values), list(x=3L))
|
|
|
|
# Just inputs, no values, and leading '&'
|
|
vals <- restore_context("&", input_str, "&a=1&b=2")
|
|
expect_true(contents_identical(vals$input, list(a=1L, b=2L)))
|
|
expect_identical(as.list(vals$values), list())
|
|
|
|
# No inputs, just values
|
|
vals <- restore_context("?", value_str, "&x=3")
|
|
expect_identical(vals$input, list())
|
|
expect_identical(as.list(vals$values), list(x=3L))
|
|
}
|
|
}
|
|
|
|
# Empty query string
|
|
vals <- RestoreContext$new("")$asList()
|
|
expect_identical(vals$input, list())
|
|
expect_identical(as.list(vals$values), list())
|
|
|
|
# Other items (not inputs and not values)
|
|
vals <- RestoreContext$new("?c=3&d=4")$asList()
|
|
expect_identical(vals$input, list())
|
|
expect_identical(as.list(vals$values), list())
|
|
|
|
# Multiple instances of _inputs_ or _values_
|
|
suppress_stacktrace(expect_warning(expect_warning(RestoreContext$new("?_inputs_&a=1&_inputs_"))))
|
|
suppress_stacktrace(expect_warning(expect_warning(RestoreContext$new("?_inputs_&a=1&_inputs_&"))))
|
|
suppress_stacktrace(expect_warning(expect_warning(RestoreContext$new("?_inputs_&a=1&_inputs_&b=2"))))
|
|
suppress_stacktrace(expect_warning(expect_warning(RestoreContext$new("?_inputs_&a=1&_values_&b=2&_inputs_&"))))
|
|
suppress_stacktrace(expect_warning(expect_warning(RestoreContext$new("?_values_&a=1&_values_"))))
|
|
suppress_stacktrace(expect_warning(RestoreContext$new("?_inputs_&a=1&_values_&_values&b=2")))
|
|
|
|
# If there's an error in the conversion from query string, should have
|
|
# blank values.
|
|
suppress_stacktrace(expect_warning(rc <- RestoreContext$new("?_inputs_&a=[x&b=1")))
|
|
expect_identical(rc$input$asList(), list(b=1L))
|
|
expect_identical(as.list(rc$values), list())
|
|
expect_identical(rc$dir, NULL)
|
|
|
|
# Ignore query string if it's a subapp
|
|
rc <- RestoreContext$new("?w=&__subapp__=1")
|
|
expect_identical(rc$input$asList(), list())
|
|
expect_identical(as.list(rc$values), list())
|
|
expect_identical(rc$dir, NULL)
|
|
})
|