test_toggle.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from nicegui import ui
  2. from nicegui.testing import Screen
  3. def test_adding_toggle_options(screen: Screen):
  4. label = ui.label()
  5. toggle = ui.toggle(['A', 'B', 'C'], on_change=lambda e: label.set_text(f'Choice: {e.value}'))
  6. def add_option():
  7. toggle.options.append('D')
  8. toggle.update()
  9. ui.button('Add option', on_click=add_option)
  10. screen.open('/')
  11. screen.click('A')
  12. screen.should_contain('Choice: A')
  13. screen.should_not_contain('D')
  14. screen.click('Add option')
  15. screen.should_contain('D')
  16. screen.click('D')
  17. screen.should_contain('Choice: D')
  18. def test_changing_options(screen: Screen):
  19. t = ui.toggle([10, 20, 30], value=10)
  20. ui.label().bind_text_from(t, 'value', lambda v: f'value = {v}')
  21. ui.button('reverse', on_click=lambda: (t.options.reverse(), t.update()))
  22. ui.button('clear', on_click=lambda: (t.options.clear(), t.update()))
  23. screen.open('/')
  24. screen.click('reverse')
  25. screen.should_contain('value = 10')
  26. screen.click('clear')
  27. screen.should_contain('value = None')
  28. def test_clearable_toggle(screen: Screen):
  29. t = ui.toggle(['A', 'B', 'C'], clearable=True)
  30. ui.label().bind_text_from(t, 'value', lambda v: f'value = {v}')
  31. screen.open('/')
  32. screen.click('A')
  33. screen.should_contain('value = A')
  34. screen.click('A')
  35. screen.should_contain('value = None')