Nothing
test_that('route() function works', {
# Test empty route
empty_route <- route()
expect_s3_class(empty_route, "Route")
expect_equal(empty_route$root, "/")
# Test route with root
rooted_route <- route(root = "/api")
expect_equal(rooted_route$root, "/api")
# Test route with handlers
handler_fn <- function(request, response, keys, ...) TRUE
route_with_handlers <- route(get = list('/test' = handler_fn))
expect_equal(route_with_handlers$get_handler("get", "/test"), handler_fn)
})
test_that('route_add() works', {
test_route <- route()
handler_fn <- function(request, response, keys, ...) TRUE
# Test adding a handler
modified_route <- route_add(test_route, "get", "/test", handler_fn)
expect_identical(modified_route, test_route) # Should return the same object
expect_equal(test_route$get_handler("get", "/test"), handler_fn)
# Test adding multiple handlers
handler_fn2 <- function(request, response, keys, ...) FALSE
modified_route <- route_add(test_route, "post", "/test", handler_fn2)
expect_equal(test_route$get_handler("post", "/test"), handler_fn2)
# Test adding handler with parameters
param_handler <- function(request, response, keys, ...) TRUE
modified_route <- route_add(test_route, "get", "/:param", param_handler)
expect_equal(test_route$get_handler("get", "/:param"), param_handler)
})
test_that('route_remove() works', {
# Setup
test_route <- route()
handler_fn <- function(request, response, keys, ...) TRUE
test_route <- route_add(test_route, "get", "/test", handler_fn)
# Test removal
modified_route <- route_remove(test_route, "get", "/test")
expect_identical(modified_route, test_route) # Should return the same object
expect_null(test_route$get_handler("get", "/test"))
# Test removing a non-existent handler
expect_warning(route_remove(test_route, "get", "/nonexistent"), NA)
})
test_that('route_get() works', {
# Setup
test_route <- route()
handler_fn <- function(request, response, keys, ...) TRUE
test_route <- route_add(test_route, "get", "/test", handler_fn)
# Test getting a handler
result <- route_get(test_route, "get", "/test")
expect_identical(result, test_route) # Should return the route itself
# Test getting a non-existent handler
result <- route_get(test_route, "post", "/test")
expect_identical(result, test_route) # Should return the route itself even if handler doesn't exist
})
test_that('route_merge() works', {
# Setup
route1 <- route()
handler_fn1 <- function(request, response, keys, ...) TRUE
route1 <- route_add(route1, "get", "/test1", handler_fn1)
route2 <- route()
handler_fn2 <- function(request, response, keys, ...) FALSE
route2 <- route_add(route2, "post", "/test2", handler_fn2)
# Test merging
merged_route <- route_merge(route1, route2)
expect_identical(merged_route, route1) # Should return the first route
expect_equal(merged_route$get_handler("get", "/test1"), handler_fn1)
expect_equal(merged_route$get_handler("post", "/test2"), handler_fn2)
# Test merging with root
route3 <- route(root = "/api")
handler_fn3 <- function(request, response, keys, ...) TRUE
route3 <- route_add(route3, "get", "/test3", handler_fn3)
merged_with_root <- route_merge(route1, route3)
expect_equal(merged_with_root$get_handler("get", "/api/test3"), handler_fn3)
# Test merging without using root
route4 <- route(root = "/api")
handler_fn4 <- function(request, response, keys, ...) TRUE
route4 <- route_add(route4, "get", "/test4", handler_fn3)
merged_no_root <- route_merge(route1, route4, use_root = FALSE)
expect_equal(merged_no_root$get_handler("get", "/test4"), handler_fn3)
})
test_that('route_stack() works with different input types', {
# Test empty stack
empty_stack <- route_stack()
expect_s3_class(empty_stack, "RouteStack")
# Test stacking with Route
test_route <- route()
handler_fn <- function(request, response, keys, ...) TRUE
test_route <- route_add(test_route, "get", "/test", handler_fn)
stacked_route <- route_stack(test_route, another = route())
expect_s3_class(stacked_route, "RouteStack")
expect_true(stacked_route$has_route("x"))
expect_true(stacked_route$has_route("another"))
# Test stacking with AssetRoute
asset_r <- asset_route("/assets", system.file(package = "routr"))
stacked_asset <- route_stack(asset_r, api = route())
expect_s3_class(stacked_asset, "RouteStack")
expect_true(stacked_asset$has_route("x"))
expect_true(stacked_asset$has_route("api"))
# Test adding to existing RouteStack
stack <- route_stack()
stack_with_routes <- route_stack(stack, first = route(), second = route())
expect_true(stack_with_routes$has_route("first"))
expect_true(stack_with_routes$has_route("second"))
# Test invalid input
expect_snapshot(route_stack(1), error = TRUE)
})
test_that('route_stack() with .after parameter works', {
stack <- route_stack()
r1 <- route()
r2 <- route()
r3 <- route()
# Add routes in specific order
stack <- route_stack(stack, first = r1)
stack <- route_stack(stack, third = r3)
stack <- route_stack(stack, second = r2, .after = 1)
# Check that the order is correct
route_names <- stack$routes
expect_equal(route_names[1], "first")
expect_equal(route_names[2], "second")
expect_equal(route_names[3], "third")
})
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.