reflex/tests/test_route.py
2023-09-08 12:18:33 -07:00

72 lines
1.7 KiB
Python

import pytest
from reflex import constants
from reflex.route import catchall_in_route, get_route_args, verify_route_validity
@pytest.mark.parametrize(
"route_name, expected",
[
("/users/[id]", {"id": constants.RouteArgType.SINGLE}),
(
"/posts/[postId]/comments/[commentId]",
{
"postId": constants.RouteArgType.SINGLE,
"commentId": constants.RouteArgType.SINGLE,
},
),
],
)
def test_route_args(route_name, expected):
assert get_route_args(route_name) == expected
@pytest.mark.parametrize(
"route_name",
[
"/products/[id]/[id]",
"/posts/[postId]/comments/[postId]",
],
)
def test_invalid_route_args(route_name):
with pytest.raises(ValueError):
get_route_args(route_name)
@pytest.mark.parametrize(
"route_name,expected",
[
("/events/[year]/[month]/[...slug]", "[...slug]"),
("pages/shop/[[...slug]]", "[[...slug]]"),
],
)
def test_catchall_in_route(route_name, expected):
assert catchall_in_route(route_name) == expected
@pytest.mark.parametrize(
"route_name",
[
"/products",
"/products/[category]/[...]/details/[version]",
"[...]",
"/products/details",
],
)
def test_verify_valid_routes(route_name):
verify_route_validity(route_name)
@pytest.mark.parametrize(
"route_name",
[
"/products/[...]/details/[category]/latest",
"/blog/[...]/post/[year]/latest",
"/products/[...]/details/[...]/[category]/[...]/latest",
"/products/[...]/details/category",
],
)
def test_verify_invalid_routes(route_name):
with pytest.raises(ValueError):
verify_route_validity(route_name)