summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2026-07-24 13:17:51 +0200
committerYuval Adam <_@yuv.al>2026-07-24 13:17:51 +0200
commitb52ab0c70af12b80257b45ac91e5ea71b01549de (patch)
treeb60122dd66bcdd43eba21908f957fe4e111314cf /tests
parentdf780f6aa210f0916323dd3eb925d762dbb0769d (diff)
Show an IBus preedit spinner while transcribing
Diffstat (limited to 'tests')
-rw-r--r--tests/test_ibus_engine.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/test_ibus_engine.py b/tests/test_ibus_engine.py
new file mode 100644
index 0000000..18be819
--- /dev/null
+++ b/tests/test_ibus_engine.py
@@ -0,0 +1,42 @@
+import unittest
+from unittest.mock import MagicMock, patch
+
+from parley.ibus_engine import IBusIntegration, ParleyIBusEngine
+
+
+class IBusSpinnerTests(unittest.TestCase):
+ def setUp(self) -> None:
+ self.integration = object.__new__(IBusIntegration)
+ self.integration._processing = False
+ self.integration._spinner_frame = 0
+ self.integration._spinner_source = 0
+ self.engine = MagicMock()
+ ParleyIBusEngine.focused = self.engine
+
+ def tearDown(self) -> None:
+ ParleyIBusEngine.focused = None
+
+ @patch("parley.ibus_engine.GLib.timeout_add", return_value=42)
+ def test_processing_uses_temporary_preedit_text(
+ self, timeout_add: MagicMock
+ ) -> None:
+ self.integration.set_processing(True)
+
+ arguments = self.engine.update_preedit_text_with_mode.call_args.args
+ self.assertEqual(arguments[0].get_text(), "⠋ Transcribing…")
+ self.assertTrue(arguments[2])
+ timeout_add.assert_called_once_with(120, self.integration._advance_spinner)
+
+ @patch("parley.ibus_engine.GLib.Source.remove")
+ def test_stopping_processing_hides_preedit(self, remove: MagicMock) -> None:
+ self.integration._processing = True
+ self.integration._spinner_source = 42
+
+ self.integration.set_processing(False)
+
+ remove.assert_called_once_with(42)
+ self.engine.hide_preedit_text.assert_called_once_with()
+
+
+if __name__ == "__main__":
+ unittest.main()