瀏覽代碼

Testing on_page_ready callback.
Initially created to fix #50 but also serves as an example for #94.

Rodja Trappe 2 年之前
父節點
當前提交
c664afb780
共有 1 個文件被更改,包括 24 次插入1 次删除
  1. 24 1
      tests/test_pages.py

+ 24 - 1
tests/test_pages.py

@@ -1,6 +1,7 @@
+import asyncio
 from uuid import uuid4
 
-from nicegui import ui
+from nicegui import task_logger, ui
 
 from .user import User
 
@@ -107,3 +108,25 @@ def test_shared_and_individual_pages(user: User):
     user.open('/individual_page')
     uuid2 = user.find('individual page').text.split()[-1]
     assert uuid1 != uuid2
+
+
+def test_on_page_ready_event(user: User):
+    '''This feature was introduced to fix #50; see https://github.com/zauberzeug/nicegui/issues/50#issuecomment-1210962617.'''
+
+    async def load():
+        label.text = 'loading...'
+        # NOTE we can not use asyncio.create_task() here because we are on a different thread than the nicegui event loop
+        task_logger.create_task(takes_a_while())
+
+    async def takes_a_while():
+        await asyncio.sleep(0.1)
+        label.text = 'delayed data has been loaded'
+
+    @ui.page('/', on_page_ready=load)
+    def page():
+        global label
+        label = ui.label()
+
+    user.open('/')
+    user.sleep(0.2)
+    user.should_see('delayed data has been loaded')