Skip to content

Commit fdad4fd

Browse files
committed
test reset schedule_render_later
1 parent 5b8ab7d commit fdad4fd

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

tests/test_core/test_hooks.py

+24
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
from idom import html
88
from idom.core.dispatcher import render_json_patch
99
from idom.core.hooks import COMPONENT_DID_RENDER_EFFECT, LifeCycleHook, current_hook
10+
from idom.core.layout import Layout
1011
from idom.testing import HookCatcher, assert_idom_logged
12+
from idom.utils import Ref
1113
from tests.assert_utils import assert_same_items
1214

1315

@@ -1139,3 +1141,25 @@ def bad_effect():
11391141
await layout.render()
11401142
component_hook.latest.schedule_render()
11411143
await layout.render() # no error
1144+
1145+
1146+
async def test_set_state_during_render():
1147+
render_count = Ref(0)
1148+
1149+
@idom.component
1150+
def SetStateDuringRender():
1151+
render_count.current += 1
1152+
state, set_state = idom.use_state(0)
1153+
if not state:
1154+
set_state(state + 1)
1155+
return html.div(state)
1156+
1157+
with Layout(SetStateDuringRender()) as layout:
1158+
await layout.render()
1159+
assert render_count.current == 1
1160+
await layout.render()
1161+
assert render_count.current == 2
1162+
1163+
# there should be no more renders to perform
1164+
with pytest.raises(asyncio.exceptions.TimeoutError):
1165+
await asyncio.wait_for(layout.render(), timeout=0.1)

0 commit comments

Comments
 (0)