123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import asyncio
- from typing import List
- from nicegui import app, ui
- from nicegui.testing import Screen
- def test_adding_elements_during_onconnect_on_auto_index_page(screen: Screen):
- connections = []
- ui.label('Adding labels on_connect')
- app.on_connect(lambda _: connections.append(ui.label(f'new connection {len(connections)}')))
- screen.open('/')
- screen.should_contain('new connection 0')
- screen.open('/')
- screen.should_contain('new connection 0')
- screen.should_contain('new connection 1')
- screen.open('/')
- screen.should_contain('new connection 0')
- screen.should_contain('new connection 1')
- screen.should_contain('new connection 2')
- def test_async_connect_handler(screen: Screen):
- async def run_js():
- await asyncio.sleep(0.1)
- status.text = 'Connected'
- status = ui.label()
- app.on_connect(run_js)
- screen.open('/')
- screen.should_contain('Connected')
- def test_connect_disconnect_is_called_for_each_client(screen: Screen):
- events: List[str] = []
- @ui.page('/', reconnect_timeout=0)
- def page():
- ui.label(f'client id: {ui.context.client.id}')
- app.on_connect(lambda: events.append('connect'))
- app.on_disconnect(lambda: events.append('disconnect'))
- screen.open('/')
- screen.wait(0.5)
- screen.open('/')
- screen.wait(0.5)
- screen.open('/')
- screen.wait(0.5)
- assert events == ['connect', 'disconnect', 'connect', 'disconnect', 'connect']
- def test_startup_and_shutdown_handlers(screen: Screen):
- events: List[str] = []
- def startup():
- events.append('startup')
- async def startup_async():
- events.append('startup_async')
- def shutdown():
- events.append('shutdown')
- async def shutdown_async():
- events.append('shutdown_async')
- app.on_startup(startup)
- app.on_startup(startup_async)
- app.on_startup(startup_async())
- app.on_shutdown(shutdown)
- app.on_shutdown(shutdown_async)
- app.on_shutdown(shutdown_async())
- screen.open('/')
- screen.wait(0.5)
- assert events == ['startup', 'startup_async', 'startup_async']
- app.shutdown()
- screen.wait(0.5)
- assert events == ['startup', 'startup_async', 'startup_async', 'shutdown', 'shutdown_async', 'shutdown_async']
|