test_select.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from nicegui import ui
  2. from .screen import Screen
  3. def test_select(screen: Screen):
  4. ui.select(['A', 'B', 'C'], value='A')
  5. screen.open('/')
  6. screen.should_contain('A')
  7. screen.should_not_contain('B')
  8. screen.should_not_contain('C')
  9. screen.click('A') # open the dropdown
  10. screen.click('B') # close the dropdown
  11. screen.wait(0.5)
  12. screen.should_not_contain('A')
  13. screen.should_contain('B')
  14. screen.should_not_contain('C')
  15. def test_select_with_input(screen: Screen):
  16. ui.select(['A', 'AB', 'XYZ'], with_input=True)
  17. screen.open('/')
  18. screen.find_by_tag('input').click()
  19. screen.should_contain('XYZ')
  20. screen.find_by_tag('input').send_keys('A')
  21. screen.wait(0.5)
  22. screen.should_contain('A')
  23. screen.should_contain('AB')
  24. screen.should_not_contain('XYZ')
  25. def test_replace_select(screen: Screen):
  26. with ui.row() as container:
  27. ui.select(['A'], value='A')
  28. def replace():
  29. container.clear()
  30. with container:
  31. ui.select(['B'], value='B')
  32. ui.button('Replace', on_click=replace)
  33. screen.open('/')
  34. screen.should_contain('A')
  35. screen.click('Replace')
  36. screen.should_contain('B')
  37. screen.should_not_contain('A')
  38. def test_multi_select(screen: Screen):
  39. s = ui.select(['Alice', 'Bob', 'Carol'], value='Alice', multiple=True).props('use-chips')
  40. ui.label().bind_text_from(s, 'value', backward=str)
  41. screen.open('/')
  42. screen.should_contain("['Alice']")
  43. screen.click('Alice')
  44. screen.click('Bob')
  45. screen.should_contain("['Alice', 'Bob']")
  46. screen.click('cancel') # remove icon
  47. screen.should_contain("['Bob']")