Files
textual/tests/toggles/test_checkbox.py
Dave Pearson 6139c95f3a Test that the event aliases are actually the same reference
I thought I thought I wanted what I thought but now I think about it I think
I thought wrong and now I think better.
2023-05-04 16:43:20 +01:00

52 lines
1.7 KiB
Python

from __future__ import annotations
from textual.app import App, ComposeResult
from textual.widgets import Checkbox
class CheckboxApp(App[None]):
def __init__(self):
super().__init__()
self.events_received = []
def compose(self) -> ComposeResult:
yield Checkbox("Test", id="cb1")
yield Checkbox(id="cb2")
yield Checkbox(value=True, id="cb3")
def on_checkbox_changed(self, event: Checkbox.Changed) -> None:
self.events_received.append(
(event.checkbox.id, event.checkbox.value, event.checkbox == event.control)
)
async def test_checkbox_initial_state() -> None:
"""The initial states of the check boxes should be as we specified."""
async with CheckboxApp().run_test() as pilot:
assert [box.value for box in pilot.app.query(Checkbox)] == [False, False, True]
assert [box.has_class("-on") for box in pilot.app.query(Checkbox)] == [
False,
False,
True,
]
assert pilot.app.events_received == []
async def test_checkbox_toggle() -> None:
"""Test the status of the check boxes after they've been toggled."""
async with CheckboxApp().run_test() as pilot:
for box in pilot.app.query(Checkbox):
box.toggle()
assert [box.value for box in pilot.app.query(Checkbox)] == [True, True, False]
assert [box.has_class("-on") for box in pilot.app.query(Checkbox)] == [
True,
True,
False,
]
await pilot.pause()
assert pilot.app.events_received == [
("cb1", True, True),
("cb2", True, True),
("cb3", False, True),
]