From cfe7be3abe73edc7753427390c06349474e43d93 Mon Sep 17 00:00:00 2001 From: Dave Pearson Date: Thu, 23 Feb 2023 16:46:58 +0000 Subject: [PATCH] Some initial Checkbox unit testing Lots more to come. --- tests/toggles/test_checkbox.py | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tests/toggles/test_checkbox.py diff --git a/tests/toggles/test_checkbox.py b/tests/toggles/test_checkbox.py new file mode 100644 index 000000000..ef79ccf76 --- /dev/null +++ b/tests/toggles/test_checkbox.py @@ -0,0 +1,39 @@ +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.input.id, event.input.value)) + + +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 pilot.app.events_received == [] + + +async def test_checkbox_toggle() -> None: + """The initial states of the check boxes should be as we specified.""" + 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] + await pilot.pause() + assert pilot.app.events_received == [ + ("cb1", True), + ("cb2", True), + ("cb3", False), + ]