mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
107 lines
4.7 KiB
Python
107 lines
4.7 KiB
Python
from __future__ import annotations
|
|
|
|
from textual.app import App, ComposeResult
|
|
from textual.widgets import Tree
|
|
|
|
|
|
class TreeApp(App[None]):
|
|
"""Test tree app."""
|
|
|
|
def compose(self) -> ComposeResult:
|
|
yield Tree("Test")
|
|
|
|
def on_mount(self) -> None:
|
|
tree = self.query_one(Tree)
|
|
for n in range(10):
|
|
tree.root.add(f"Trunk {n}")
|
|
node = tree.root.children[0]
|
|
for n in range(10):
|
|
node = node.add(str(n))
|
|
|
|
|
|
async def test_tree_node_expand() -> None:
|
|
"""Expanding one node should not expand all nodes."""
|
|
async with TreeApp().run_test() as pilot:
|
|
pilot.app.query_one(Tree).root.expand()
|
|
assert pilot.app.query_one(Tree).root.is_expanded is True
|
|
check_node = pilot.app.query_one(Tree).root.children[0]
|
|
while check_node.children:
|
|
assert any(child.is_expanded for child in check_node.children) is False
|
|
check_node = check_node.children[0]
|
|
|
|
|
|
async def test_tree_node_expand_all() -> None:
|
|
"""Expanding all on a node should expand all child nodes too."""
|
|
async with TreeApp().run_test() as pilot:
|
|
pilot.app.query_one(Tree).root.expand_all()
|
|
assert pilot.app.query_one(Tree).root.is_expanded is True
|
|
check_node = pilot.app.query_one(Tree).root.children[0]
|
|
while check_node.children:
|
|
assert check_node.children[0].is_expanded is True
|
|
assert any(child.is_expanded for child in check_node.children[1:]) is False
|
|
check_node = check_node.children[0]
|
|
|
|
|
|
async def test_tree_node_collapse() -> None:
|
|
"""Collapsing one node should not collapse all nodes."""
|
|
async with TreeApp().run_test() as pilot:
|
|
pilot.app.query_one(Tree).root.expand_all()
|
|
pilot.app.query_one(Tree).root.children[0].collapse()
|
|
assert pilot.app.query_one(Tree).root.children[0].is_expanded is False
|
|
check_node = pilot.app.query_one(Tree).root.children[0].children[0]
|
|
while check_node.children:
|
|
assert all(child.is_expanded for child in check_node.children) is True
|
|
check_node = check_node.children[0]
|
|
|
|
|
|
async def test_tree_node_collapse_all() -> None:
|
|
"""Collapsing all on a node should collapse all child noes too."""
|
|
async with TreeApp().run_test() as pilot:
|
|
pilot.app.query_one(Tree).root.expand_all()
|
|
pilot.app.query_one(Tree).root.children[0].collapse_all()
|
|
assert pilot.app.query_one(Tree).root.children[0].is_expanded is False
|
|
check_node = pilot.app.query_one(Tree).root.children[0].children[0]
|
|
while check_node.children:
|
|
assert check_node.children[0].is_expanded is False
|
|
assert all(child.is_expanded for child in check_node.children[1:]) is True
|
|
check_node = check_node.children[0]
|
|
|
|
|
|
async def test_tree_node_toggle() -> None:
|
|
"""Toggling one node should not toggle all nodes."""
|
|
async with TreeApp().run_test() as pilot:
|
|
assert pilot.app.query_one(Tree).root.is_expanded is False
|
|
check_node = pilot.app.query_one(Tree).root.children[0]
|
|
while check_node.children:
|
|
assert any(child.is_expanded for child in check_node.children) is False
|
|
check_node = check_node.children[0]
|
|
pilot.app.query_one(Tree).root.toggle()
|
|
assert pilot.app.query_one(Tree).root.is_expanded is True
|
|
check_node = pilot.app.query_one(Tree).root.children[0]
|
|
while check_node.children:
|
|
assert any(child.is_expanded for child in check_node.children) is False
|
|
check_node = check_node.children[0]
|
|
|
|
|
|
async def test_tree_node_toggle_all() -> None:
|
|
"""Toggling all on a node should toggle all child nodes too."""
|
|
async with TreeApp().run_test() as pilot:
|
|
assert pilot.app.query_one(Tree).root.is_expanded is False
|
|
check_node = pilot.app.query_one(Tree).root.children[0]
|
|
while check_node.children:
|
|
assert any(child.is_expanded for child in check_node.children) is False
|
|
check_node = check_node.children[0]
|
|
pilot.app.query_one(Tree).root.toggle_all()
|
|
assert pilot.app.query_one(Tree).root.is_expanded is True
|
|
check_node = pilot.app.query_one(Tree).root.children[0]
|
|
while check_node.children:
|
|
assert check_node.children[0].is_expanded is True
|
|
assert any(child.is_expanded for child in check_node.children[1:]) is False
|
|
check_node = check_node.children[0]
|
|
pilot.app.query_one(Tree).root.toggle_all()
|
|
assert pilot.app.query_one(Tree).root.is_expanded is False
|
|
check_node = pilot.app.query_one(Tree).root.children[0]
|
|
while check_node.children:
|
|
assert any(child.is_expanded for child in check_node.children) is False
|
|
check_node = check_node.children[0]
|