aboutsummaryrefslogtreecommitdiff
path: root/app/tests/test_tui.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/tests/test_tui.py')
-rw-r--r--app/tests/test_tui.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/app/tests/test_tui.py b/app/tests/test_tui.py
index b839a71..7821ebb 100644
--- a/app/tests/test_tui.py
+++ b/app/tests/test_tui.py
@@ -684,6 +684,58 @@ class FormTests(TuiTestCase):
result = tui.form(screen, "Settings", fields)
self.assertEqual(result, {"combine": True})
+ def test_toggle_field_cycles_with_enter(self):
+ # Enter steps the toggle to its next choice in place (no menu
+ # opens), Tab -> button, Enter saves.
+ fields = [{"key": "transcripts", "label": "Transcripts",
+ "kind": "toggle", "value": "missing",
+ "choices": [("New voices", "missing"),
+ ("All voices", "all")]}]
+ screen = FakeScreen(keys=[10, 9, 10])
+ result = tui.form(screen, "Settings", fields)
+ self.assertEqual(result, {"transcripts": "all"})
+
+ def test_toggle_field_cycles_with_space(self):
+ fields = [{"key": "transcripts", "label": "Transcripts",
+ "kind": "toggle", "value": "missing",
+ "choices": [("New voices", "missing"),
+ ("All voices", "all")]}]
+ screen = FakeScreen(keys=[ord(" "), 9, 10])
+ result = tui.form(screen, "Settings", fields)
+ self.assertEqual(result, {"transcripts": "all"})
+
+ def test_toggle_field_last_choice_wraps_to_the_first(self):
+ fields = [{"key": "transcripts", "label": "Transcripts",
+ "kind": "toggle", "value": "all",
+ "choices": [("New voices", "missing"),
+ ("All voices", "all")]}]
+ screen = FakeScreen(keys=[10, 9, 10])
+ result = tui.form(screen, "Settings", fields)
+ self.assertEqual(result, {"transcripts": "missing"})
+
+ def test_toggle_field_renders_the_matching_label(self):
+ fields = [{"key": "transcripts", "label": "Transcripts",
+ "kind": "toggle", "value": "missing",
+ "choices": [("New voices", "missing"),
+ ("All voices", "all")]}]
+ screen = FakeScreen(keys=[9, 10]) # straight to Save
+ tui.form(screen, "Settings", fields)
+ texts = [text for _, _, text, _ in screen.strings]
+ self.assertTrue(any("New voices" in text for text in texts))
+ self.assertFalse(any("All voices" in text for text in texts))
+
+ def test_toggle_field_fires_on_change(self):
+ calls = []
+ fields = [{"key": "transcripts", "label": "Transcripts",
+ "kind": "toggle", "value": "missing",
+ "choices": [("New voices", "missing"),
+ ("All voices", "all")],
+ "on_change": lambda fs: calls.append(1)}]
+ screen = FakeScreen(keys=[10, 9, 10])
+ result = tui.form(screen, "Settings", fields)
+ self.assertEqual(calls, [1])
+ self.assertEqual(result, {"transcripts": "all"})
+
def test_hidden_field_keeps_value_and_is_not_drawn(self):
fields = self._fields()
fields.append({"key": "hidden", "label": "Secret", "kind": "text",