test_teleport.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from typing import Optional
  2. from nicegui import ui
  3. from nicegui.testing import Screen
  4. def test_teleport(screen: Screen):
  5. ui.card().classes('card')
  6. def create_teleport():
  7. with ui.teleport('.card'):
  8. ui.label('Hello')
  9. ui.button('create', on_click=create_teleport)
  10. screen.open('/')
  11. screen.click('create')
  12. assert screen.find_by_css('.card > div').text == 'Hello'
  13. def test_teleport_with_element(screen: Screen):
  14. card = ui.card().classes('card')
  15. def create_teleport():
  16. with ui.teleport(card):
  17. ui.label('Hello')
  18. ui.button('create', on_click=create_teleport)
  19. screen.open('/')
  20. screen.click('create')
  21. assert screen.find_by_css('.card > div').text == 'Hello'
  22. def test_update(screen: Screen):
  23. teleport: Optional[ui.teleport] = None
  24. card = ui.card().classes('card')
  25. def create_teleport():
  26. nonlocal teleport
  27. with ui.teleport('.card') as teleport:
  28. ui.label('Hello')
  29. ui.button('create', on_click=create_teleport)
  30. def rebuild_card():
  31. card.delete()
  32. ui.card().classes('card')
  33. assert teleport is not None
  34. teleport.update()
  35. ui.notify('Card rebuilt')
  36. ui.button('rebuild card', on_click=rebuild_card)
  37. screen.open('/')
  38. screen.click('create')
  39. screen.should_contain('Hello')
  40. screen.click('rebuild card')
  41. screen.should_contain('Card rebuilt')
  42. assert screen.find_by_css('.card > div').text == 'Hello'