123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- from nicegui import ui
- from nicegui.testing import Screen
- def test_tree(screen: Screen):
- ui.tree([
- {'id': 'numbers', 'children': [{'id': '1'}, {'id': '2'}]},
- {'id': 'letters', 'children': [{'id': 'A'}, {'id': 'B'}]},
- ], label_key='id')
- screen.open('/')
- screen.should_contain('numbers')
- screen.should_contain('letters')
- screen.should_not_contain('1')
- screen.should_not_contain('2')
- screen.should_not_contain('A')
- screen.should_not_contain('B')
- screen.find_by_class('q-icon').click()
- screen.wait(0.5)
- screen.should_contain('1')
- screen.should_contain('2')
- def test_expand_and_collapse_nodes(screen: Screen):
- tree = ui.tree([
- {'id': 'numbers', 'children': [{'id': '1'}, {'id': '2'}]},
- {'id': 'letters', 'children': [{'id': 'A'}, {'id': 'B'}]},
- ], label_key='id')
- ui.button('Expand all', on_click=tree.expand)
- ui.button('Collapse all', on_click=tree.collapse)
- ui.button('Expand numbers', on_click=lambda: tree.expand(['numbers']))
- ui.button('Collapse numbers', on_click=lambda: tree.collapse(['numbers']))
- screen.open('/')
- screen.click('Expand all')
- screen.wait(0.5)
- screen.should_contain('1')
- screen.should_contain('2')
- screen.should_contain('A')
- screen.should_contain('B')
- screen.click('Collapse all')
- screen.wait(0.5)
- screen.should_not_contain('1')
- screen.should_not_contain('2')
- screen.should_not_contain('A')
- screen.should_not_contain('B')
- screen.click('Expand numbers')
- screen.wait(0.5)
- screen.should_contain('1')
- screen.should_contain('2')
- screen.should_not_contain('A')
- screen.should_not_contain('B')
- screen.click('Expand all')
- screen.click('Collapse numbers')
- screen.wait(0.5)
- screen.should_not_contain('1')
- screen.should_not_contain('2')
- screen.should_contain('A')
- screen.should_contain('B')
- def test_select_deselect_node(screen: Screen):
- tree = ui.tree([
- {'id': 'numbers', 'children': [{'id': '1'}, {'id': '2'}]},
- {'id': 'letters', 'children': [{'id': 'A'}, {'id': 'B'}]},
- ], label_key='id')
- ui.button('Select', on_click=lambda: tree.select('2'))
- ui.button('Deselect', on_click=tree.deselect)
- ui.label().bind_text_from(tree.props, 'selected', lambda x: f'Selected: {x}')
- screen.open('/')
- screen.click('Select')
- screen.should_contain('Selected: 2')
- screen.click('Deselect')
- screen.should_contain('Selected: None')
- def test_tick_untick_node_or_nodes(screen: Screen):
- tree = ui.tree([
- {'id': 'numbers', 'children': [{'id': '1'}, {'id': '2'}]},
- {'id': 'letters', 'children': [{'id': 'A'}, {'id': 'B'}]},
- ], label_key='id', tick_strategy='leaf')
- ui.button('Tick some', on_click=lambda: tree.tick(['1', '2', 'B']))
- ui.button('Untick some', on_click=lambda: tree.untick(['1', 'B']))
- ui.button('Tick all', on_click=tree.tick)
- ui.button('Untick all', on_click=tree.untick)
- ui.label().bind_text_from(tree.props, 'ticked', lambda x: f'Ticked: {sorted(x)}')
- screen.open('/')
- screen.should_contain('Ticked: []')
- screen.click('Tick some')
- screen.should_contain("Ticked: ['1', '2', 'B']")
- screen.click('Untick some')
- screen.should_contain("Ticked: ['2']")
- screen.click('Tick all')
- screen.should_contain("Ticked: ['1', '2', 'A', 'B', 'letters', 'numbers']")
- screen.click('Untick all')
- screen.should_contain('Ticked: []')
- def test_filter(screen: Screen):
- t = ui.tree([
- {'id': 'fruits', 'children': [{'id': 'Apple'}, {'id': 'Banana'}, {'id': 'Cherry'}]},
- ], label_key='id', tick_strategy='leaf-filtered').expand()
- ui.button('Filter', on_click=lambda: t.set_filter('a'))
- screen.open('/')
- screen.should_contain('Apple')
- screen.should_contain('Banana')
- screen.should_contain('Cherry')
- screen.click('Filter')
- screen.should_contain('Apple')
- screen.should_contain('Banana')
- screen.should_not_contain('Cherry')
|