test_page.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from reflex import text
  2. from reflex.config import get_config
  3. from reflex.page import DECORATED_PAGES, get_decorated_pages, page
  4. def test_page_decorator():
  5. def foo_():
  6. return text("foo")
  7. DECORATED_PAGES.clear()
  8. assert len(DECORATED_PAGES) == 0
  9. decorated_foo_ = page()(foo_)
  10. assert decorated_foo_ == foo_
  11. assert len(DECORATED_PAGES) == 1
  12. page_data = DECORATED_PAGES.get(get_config().app_name, [])[0][1]
  13. assert page_data == {}
  14. DECORATED_PAGES.clear()
  15. def test_page_decorator_with_kwargs():
  16. def foo_():
  17. return text("foo")
  18. def load_foo():
  19. return []
  20. DECORATED_PAGES.clear()
  21. assert len(DECORATED_PAGES) == 0
  22. decorated_foo_ = page(
  23. route="foo",
  24. title="Foo",
  25. image="foo.png",
  26. description="Foo description",
  27. meta=["foo-meta"],
  28. script_tags=["foo-script"],
  29. on_load=load_foo,
  30. )(foo_)
  31. assert decorated_foo_ == foo_
  32. assert len(DECORATED_PAGES) == 1
  33. page_data = DECORATED_PAGES.get(get_config().app_name, [])[0][1]
  34. assert page_data == {
  35. "description": "Foo description",
  36. "image": "foo.png",
  37. "meta": ["foo-meta"],
  38. "on_load": load_foo,
  39. "route": "foo",
  40. "script_tags": ["foo-script"],
  41. "title": "Foo",
  42. }
  43. DECORATED_PAGES.clear()
  44. def test_get_decorated_pages():
  45. assert get_decorated_pages() == []
  46. def foo_():
  47. return text("foo")
  48. page()(foo_)
  49. assert get_decorated_pages() == []
  50. assert get_decorated_pages(omit_implicit_routes=False) == [{}]
  51. page(route="foo2")(foo_)
  52. assert get_decorated_pages() == [{"route": "foo2"}]
  53. assert get_decorated_pages(omit_implicit_routes=False) == [{}, {"route": "foo2"}]
  54. page(route="foo3", title="Foo3")(foo_)
  55. assert get_decorated_pages() == [
  56. {"route": "foo2"},
  57. {"route": "foo3", "title": "Foo3"},
  58. ]
  59. assert get_decorated_pages(omit_implicit_routes=False) == [
  60. {},
  61. {"route": "foo2"},
  62. {"route": "foo3", "title": "Foo3"},
  63. ]