test_storage.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import asyncio
  2. from uuid import uuid4
  3. from nicegui import Client, app, ui
  4. from .screen import Screen
  5. def test_session_data_is_stored_in_the_browser(screen: Screen):
  6. @ui.page('/')
  7. def page():
  8. app.storage.session['count'] = app.storage.session.get('count', 0) + 1
  9. ui.label(app.storage.session['count'] or 'no session')
  10. @app.get('/session')
  11. def session():
  12. return 'count = ' + str(app.storage.session['count'])
  13. screen.open('/')
  14. screen.should_contain('1')
  15. screen.open('/')
  16. screen.should_contain('2')
  17. screen.open('/')
  18. screen.should_contain('3')
  19. screen.open('/session')
  20. screen.should_contain('count = 3')
  21. def test_session_storage_supports_asyncio(screen: Screen):
  22. @ui.page('/')
  23. async def page():
  24. app.storage.session['count'] = app.storage.session.get('count', 0) + 1
  25. await asyncio.sleep(0.5)
  26. ui.label(app.storage.session['count'] or 'no session')
  27. screen.open('/')
  28. screen.switch_to(1)
  29. screen.open('/')
  30. screen.should_contain('2')
  31. screen.switch_to(0)
  32. screen.open('/')
  33. screen.should_contain('3')
  34. def test_session_modifications_after_page_load(screen: Screen):
  35. @ui.page('/')
  36. async def page(client: Client):
  37. await client.connected()
  38. try:
  39. app.storage.session['test'] = 'data'
  40. except TypeError as e:
  41. ui.label(str(e))
  42. screen.open('/')
  43. screen.should_contain('response to the browser has already been build')