MCPcopy Index your code
hub / github.com/reactive-python/reactpy / test_async_renders

Function test_async_renders

src/py/reactpy/tests/test_core/test_layout.py:1255–1301  ·  view source on GitHub ↗
(async_rendering)

Source from the content-addressed store, hash-verified

1253
1254
1255async def test_async_renders(async_rendering):
1256 if not async_rendering:
1257 raise pytest.skip("Async rendering not enabled")
1258
1259 child_1_hook = HookCatcher()
1260 child_2_hook = HookCatcher()
1261 child_1_rendered = Event()
1262 child_2_rendered = Event()
1263 child_1_render_count = Ref(0)
1264 child_2_render_count = Ref(0)
1265
1266 @component
1267 def outer():
1268 return html._(child_1(), child_2())
1269
1270 @component
1271 @child_1_hook.capture
1272 def child_1():
1273 child_1_rendered.set()
1274 child_1_render_count.current += 1
1275
1276 @component
1277 @child_2_hook.capture
1278 def child_2():
1279 child_2_rendered.set()
1280 child_2_render_count.current += 1
1281
1282 async with Layout(outer()) as layout:
1283 await layout.render()
1284
1285 # clear render events and counts
1286 child_1_rendered.clear()
1287 child_2_rendered.clear()
1288 child_1_render_count.current = 0
1289 child_2_render_count.current = 0
1290
1291 # we schedule two renders but expect only one
1292 child_1_hook.latest.schedule_render()
1293 child_1_hook.latest.schedule_render()
1294 child_2_hook.latest.schedule_render()
1295 child_2_hook.latest.schedule_render()
1296
1297 await child_1_rendered.wait()
1298 await child_2_rendered.wait()
1299
1300 assert child_1_render_count.current == 1
1301 assert child_2_render_count.current == 1
1302
1303
1304async def test_none_does_not_render():

Callers

nothing calls this directly

Calls 8

waitMethod · 0.95
HookCatcherClass · 0.90
EventClass · 0.90
RefClass · 0.90
LayoutClass · 0.90
outerFunction · 0.85
schedule_renderMethod · 0.80
renderMethod · 0.45

Tested by

no test coverage detected