re add removed method with better behaviour and tests (#3986)

This commit is contained in:
Thomas Brandého 2024-09-24 23:29:56 +02:00 committed by GitHub
parent 2c4310d9ff
commit 4e4d36a867
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 49 additions and 1 deletions

View File

@ -63,3 +63,22 @@ def page(
return render_fn
return decorator
def get_decorated_pages(omit_implicit_routes=True) -> list[dict[str, Any]]:
"""Get the decorated pages.
Args:
omit_implicit_routes: Whether to omit pages where the route will be implicitely guessed later.
Returns:
The decorated pages.
"""
return sorted(
[
page_data
for _, page_data in DECORATED_PAGES[get_config().app_name]
if not omit_implicit_routes or "route" in page_data
],
key=lambda x: x.get("route", ""),
)

View File

@ -1,6 +1,6 @@
from reflex import text
from reflex.config import get_config
from reflex.page import DECORATED_PAGES, page
from reflex.page import DECORATED_PAGES, get_decorated_pages, page
def test_page_decorator():
@ -48,3 +48,32 @@ def test_page_decorator_with_kwargs():
}
DECORATED_PAGES.clear()
def test_get_decorated_pages():
assert get_decorated_pages() == []
def foo_():
return text("foo")
page()(foo_)
assert get_decorated_pages() == []
assert get_decorated_pages(omit_implicit_routes=False) == [{}]
page(route="foo2")(foo_)
assert get_decorated_pages() == [{"route": "foo2"}]
assert get_decorated_pages(omit_implicit_routes=False) == [{}, {"route": "foo2"}]
page(route="foo3", title="Foo3")(foo_)
assert get_decorated_pages() == [
{"route": "foo2"},
{"route": "foo3", "title": "Foo3"},
]
assert get_decorated_pages(omit_implicit_routes=False) == [
{},
{"route": "foo2"},
{"route": "foo3", "title": "Foo3"},
]