Nothing
# --- Tests for Internal Server Logic ---
test_that("Server logic handles inputs correctly", {
skip_if_not_installed("shiny")
skip_if_not_installed("r5r")
# 1. Load the server factory directly from source
server_factory <- source(
system.file("shiny_app", "server.R", package = "r5rgui"),
local = TRUE
)$value
# 2. Create dummy arguments expected by the server factory
dummy_args <- list(
r5r_network = "dummy_network_obj",
r5r_network_name = "dummy_network",
center = c(0, 0),
zoom = 10,
departure_date = Sys.Date()
)
# 3. Instantiate the server function
server <- server_factory(dummy_args)
# 4. Use shiny::testServer to test the logic
shiny::testServer(server, {
# -- Test Initialization --
# Check if date input was updated with the argument passed in dummy_args
# Note: inputs set via update* are usually reflected in session,
# but strict unit testing of updates often requires checking output or session$sendCustomMessage.
# Here we verify the reactive logic flows.
# -- Test: Map Click triggers Start Location update --
# Simulate a click on the map (start point)
session$setInputs(map_click = list(lng = -51.22, lat = -30.05))
# Check if the reactive value 'locations$start' updated
expect_equal(locations$start$lon, -51.22)
expect_equal(locations$start$lat, -30.05)
# Check if the text input update was triggered (value stored in input after update)
# In testServer, we can check if the logic attempted to update the input.
# Since testServer mocks the browser, we verify the internal reactive state is consistent.
# -- Test: Right Click triggers End Location update --
# Simulate a right click (end point)
session$setInputs(js_right_click = list(lng = -51.18, lat = -30.02))
expect_equal(locations$end$lon, -51.18)
expect_equal(locations$end$lat, -30.02)
# -- Test: Reset button clears locations --
session$setInputs(reset = 1)
expect_null(locations$start)
expect_null(locations$end)
# -- Test: Manual Text Input Updates Location --
# User types in start coordinates manually
session$setInputs(start_coords_input = "-30.10, -51.10")
# Wait for observer to fire
session$flushReact()
expect_equal(locations$start$lat, -30.10)
expect_equal(locations$start$lon, -51.10)
})
})
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.