1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- from nicegui import ui
- from .screen import Screen
- def test_select(screen: Screen):
- ui.select(['A', 'B', 'C'], value='A')
- screen.open('/')
- screen.should_contain('A')
- screen.should_not_contain('B')
- screen.should_not_contain('C')
- screen.click('A') # open the dropdown
- screen.click('B') # close the dropdown
- screen.wait(0.5)
- screen.should_not_contain('A')
- screen.should_contain('B')
- screen.should_not_contain('C')
- def test_select_with_input(screen: Screen):
- ui.select(['A', 'AB', 'XYZ'], with_input=True)
- screen.open('/')
- screen.find_by_tag('input').click()
- screen.should_contain('XYZ')
- screen.find_by_tag('input').send_keys('A')
- screen.wait(0.5)
- screen.should_contain('A')
- screen.should_contain('AB')
- screen.should_not_contain('XYZ')
- def test_replace_select(screen: Screen):
- with ui.row() as container:
- ui.select(['A'], value='A')
- def replace():
- container.clear()
- with container:
- ui.select(['B'], value='B')
- ui.button('Replace', on_click=replace)
- screen.open('/')
- screen.should_contain('A')
- screen.click('Replace')
- screen.should_contain('B')
- screen.should_not_contain('A')
- def test_multi_select(screen: Screen):
- s = ui.select(['Alice', 'Bob', 'Carol'], value='Alice', multiple=True).props('use-chips')
- ui.label().bind_text_from(s, 'value', backward=str)
- screen.open('/')
- screen.should_contain("['Alice']")
- screen.click('Alice')
- screen.click('Bob')
- screen.should_contain("['Alice', 'Bob']")
- screen.click('cancel') # remove icon
- screen.should_contain("['Bob']")
- def test_changing_options(screen: Screen):
- s = ui.select([10, 20, 30], value=10)
- ui.label().bind_text_from(s, 'value', lambda v: f'value = {v}')
- ui.button('reverse', on_click=lambda: (s.options.reverse(), s.update()))
- ui.button('clear', on_click=lambda: (s.options.clear(), s.update()))
- screen.open('/')
- screen.click('reverse')
- screen.should_contain('value = 10')
- screen.click('clear')
- screen.should_contain('value = None')
- def test_set_options(screen: Screen):
- s = ui.select([1, 2, 3], value=1)
- ui.button('4, 5, 6', on_click=lambda: s.set_options([4, 5, 6], value=4))
- screen.open('/')
- screen.click('4, 5, 6')
- screen.wait(0.5)
- screen.find_by_class('q-select').click()
- items = [item.text for item in screen.find_all_by_class('q-item')]
- assert items == ['4', '5', '6']
|