From 4e4d36a86789f1d5ea8acfb0a208863b5b338684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Brand=C3=A9ho?= Date: Tue, 24 Sep 2024 23:29:56 +0200 Subject: [PATCH] re add removed method with better behaviour and tests (#3986) --- reflex/page.py | 19 +++++++++++++++++++ tests/test_page.py | 31 ++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/reflex/page.py b/reflex/page.py index 27a3c4fa8..52f0c8efc 100644 --- a/reflex/page.py +++ b/reflex/page.py @@ -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", ""), + ) diff --git a/tests/test_page.py b/tests/test_page.py index 9cbd2886d..e1dd70905 100644 --- a/tests/test_page.py +++ b/tests/test_page.py @@ -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"}, + ]