3
3
from reactpy import component , config , html
4
4
from reactpy .testing import DisplayFixture , poll
5
5
from reactpy .utils import Ref
6
- from tests .tooling .hooks import use_counter , use_toggle
7
-
8
-
9
- async def test_script_mount_unmount (display : DisplayFixture ):
10
- toggle_is_mounted = Ref ()
11
-
12
- @component
13
- def Root ():
14
- is_mounted , toggle_is_mounted .current = use_toggle (True )
15
- return html .div (
16
- html .div ({"id" : "mount-state" , "data_value" : False }),
17
- HasScript () if is_mounted else html .div (),
18
- )
19
-
20
- @component
21
- def HasScript ():
22
- return html .script (
23
- """() => {
24
- const mapping = {"false": false, "true": true};
25
- const mountStateEl = document.getElementById("mount-state");
26
- mountStateEl.setAttribute(
27
- "data-value", !mapping[mountStateEl.getAttribute("data-value")]);
28
- return () => mountStateEl.setAttribute(
29
- "data-value", !mapping[mountStateEl.getAttribute("data-value")]);
30
- }"""
31
- )
32
-
33
- await display .show (Root )
34
-
35
- mount_state = await display .page .wait_for_selector ("#mount-state" , state = "attached" )
36
- poll_mount_state = poll (mount_state .get_attribute , "data-value" )
37
-
38
- await poll_mount_state .until_equals ("true" )
39
-
40
- toggle_is_mounted .current ()
41
-
42
- await poll_mount_state .until_equals ("false" )
43
-
44
- toggle_is_mounted .current ()
45
-
46
- await poll_mount_state .until_equals ("true" )
6
+ from tests .tooling .hooks import use_counter
47
7
48
8
49
9
async def test_script_re_run_on_content_change (display : DisplayFixture ):
@@ -54,14 +14,8 @@ def HasScript():
54
14
count , incr_count .current = use_counter (1 )
55
15
return html .div (
56
16
html .div ({"id" : "mount-count" , "data_value" : 0 }),
57
- html .div ({"id" : "unmount-count" , "data_value" : 0 }),
58
17
html .script (
59
- f"""() => {{
60
- const mountCountEl = document.getElementById("mount-count");
61
- const unmountCountEl = document.getElementById("unmount-count");
62
- mountCountEl.setAttribute("data-value", { count } );
63
- return () => unmountCountEl.setAttribute("data-value", { count } );;
64
- }}"""
18
+ f'document.getElementById("mount-count").setAttribute("data-value", { count } );'
65
19
),
66
20
)
67
21
@@ -70,23 +24,11 @@ def HasScript():
70
24
mount_count = await display .page .wait_for_selector ("#mount-count" , state = "attached" )
71
25
poll_mount_count = poll (mount_count .get_attribute , "data-value" )
72
26
73
- unmount_count = await display .page .wait_for_selector (
74
- "#unmount-count" , state = "attached"
75
- )
76
- poll_unmount_count = poll (unmount_count .get_attribute , "data-value" )
77
-
78
27
await poll_mount_count .until_equals ("1" )
79
- await poll_unmount_count .until_equals ("0" )
80
-
81
28
incr_count .current ()
82
-
83
29
await poll_mount_count .until_equals ("2" )
84
- await poll_unmount_count .until_equals ("1" )
85
-
86
30
incr_count .current ()
87
-
88
31
await poll_mount_count .until_equals ("3" )
89
- await poll_unmount_count .until_equals ("2" )
90
32
91
33
92
34
async def test_script_from_src (display : DisplayFixture ):
0 commit comments