diff --git a/pynecone/utils.py b/pynecone/utils.py index a415b46a2..54b40a97f 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -893,9 +893,13 @@ def format_route(route: str) -> str: Returns: The formatted route. """ - route = route.strip(os.path.sep) + # If the route is empty, return the index route. + if route == "": + return constants.INDEX_ROUTE + + route = route.strip("/") route = to_snake_case(route).replace("_", "-") - return constants.INDEX_ROUTE if route == "" else route + return route def format_cond( diff --git a/tests/test_utils.py b/tests/test_utils.py index 5c50ade53..538e31122 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -206,6 +206,25 @@ def test_is_generic_alias(cls: type, expected: bool): assert utils.is_generic_alias(cls) == expected +@pytest.mark.parametrize( + "route,expected", + [ + ("", "index"), + ("custom-route", "custom-route"), + ("custom-route/", "custom-route"), + ("/custom-route", "custom-route"), + ], +) +def test_format_route(route: str, expected: bool): + """Test formatting a route. + + Args: + route: The route to format. + expected: The expected formatted route. + """ + assert utils.format_route(route) == expected + + def test_setup_frontend(tmp_path, mocker): """Test checking if assets content have been copied into the .web/public folder