forked from reactive-python/reactpy-router
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_rendering.py
60 lines (45 loc) · 1.55 KB
/
test_rendering.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import pytest
from reactpy import component, html
from reactpy.testing import DisplayFixture
from reactpy_router import browser_router, route
from .utils import page_load_complete
@pytest.mark.anyio
async def test_router_simple(display: DisplayFixture):
"""Confirm the number of rendering operations when new pages are first loaded"""
root_render_count = 0
home_page_render_count = 0
not_found_render_count = 0
@component
def root():
nonlocal root_render_count
root_render_count += 1
@component
def home_page():
nonlocal home_page_render_count
home_page_render_count += 1
return html.h1("Home Page 🏠")
@component
def not_found():
nonlocal not_found_render_count
not_found_render_count += 1
return html.h1("Missing Link 🔗💥")
return browser_router(
route("/", home_page()),
route("{404:any}", not_found()),
)
await display.show(root)
await page_load_complete(display.page)
assert root_render_count == 1
assert home_page_render_count == 1
assert not_found_render_count == 0
await display.goto("/xxx")
await page_load_complete(display.page)
assert root_render_count == 2
assert home_page_render_count == 1
assert not_found_render_count == 1
await display.goto("/yyy")
await page_load_complete(display.page)
assert root_render_count == 3
assert home_page_render_count == 1
assert not_found_render_count == 2
assert True