spiegel-keyman/linux/keyman-config/tests/test_ibus_util.py
Eberhard Beilharz c56b8a72eb
chore(linux): rename parameters
This addresses code review comments.
2023-10-16 09:12:28 +02:00

96 lines
4.3 KiB
Python

#!/usr/bin/python3
import unittest
from unittest.mock import patch
from keyman_config.ibus_util import get_ibus_bus, install_to_ibus, uninstall_from_ibus
@patch('keyman_config.ibus_util.IBus.Bus')
@patch('time.sleep', return_value=None)
class IbusUtilTests(unittest.TestCase):
def test_getIbusBus_NotConnected_ReturnsNone(self, patched_time_sleep, MockIbusBusClass):
# Setup
mock_ibusBusInstance = MockIbusBusClass.return_value
mock_ibusBusInstance.is_connected.return_value = False
# Execute/Verify
self.assertIsNone(get_ibus_bus())
self.assertTrue(mock_ibusBusInstance.is_connected.called)
self.assertTrue(MockIbusBusClass.called, "IBus.Bus called")
self.assertTrue(mock_ibusBusInstance.destroy.called)
def test_getIbusBus_GlobalEngineNotEnabled_ReturnsNone(self, patched_time_sleep, MockIbusBusClass):
# Setup
mock_ibusBusInstance = MockIbusBusClass.return_value
mock_ibusBusInstance.is_connected.return_value = True
mock_ibusBusInstance.is_global_engine_enabled.return_value = False
# Execute/Verify
self.assertIsNone(get_ibus_bus())
self.assertTrue(mock_ibusBusInstance.is_connected.called)
self.assertTrue(mock_ibusBusInstance.is_global_engine_enabled.called)
self.assertTrue(MockIbusBusClass.called, "IBus.Bus called")
self.assertTrue(mock_ibusBusInstance.destroy.called)
def test_getIbusBus_ReturnsBus(self, patched_time_sleep, MockIbusBusClass):
# Setup
mock_ibusBusInstance = MockIbusBusClass.return_value
# Execute/Verify
self.assertIsNotNone(get_ibus_bus())
self.assertTrue(MockIbusBusClass.called, "IBus.Bus called")
self.assertFalse(mock_ibusBusInstance.destroy.called)
@patch('keyman_config.gsettings.GSettings.get', return_value=['k1', 'k2', 'k3'])
@patch('keyman_config.gsettings.GSettings.set')
def test_installToIbus_AlreadyInstalled(self, patched_settings_set, patched_settings_get, patched_time_sleep, MockIbusBusClass):
# Setup
mock_ibusBusInstance = MockIbusBusClass.return_value
# Execute
install_to_ibus(mock_ibusBusInstance, 'k3')
# Verify
patched_settings_set.assert_called_once_with(
"preload-engines", ['k1', 'k2', 'k3'], 'as')
mock_ibusBusInstance.preload_engines.assert_called_once_with(
['k1', 'k2', 'k3'])
@patch('keyman_config.gsettings.GSettings.get', return_value=['k1', 'k2', 'k3'])
@patch('keyman_config.gsettings.GSettings.set')
def test_installToIbus_InstallsNewKb(self, patched_settings_set, patched_settings_get, patched_time_sleep, MockIbusBusClass):
# Setup
mock_ibusBusInstance = MockIbusBusClass.return_value
# Execute
install_to_ibus(mock_ibusBusInstance, 'k4')
# Verify
patched_settings_set.assert_called_once_with(
"preload-engines", ['k1', 'k2', 'k3', 'k4'], 'as')
mock_ibusBusInstance.preload_engines.assert_called_once_with(
['k1', 'k2', 'k3', 'k4'])
@patch('keyman_config.gsettings.GSettings.get', return_value=['k1', 'k2', 'k3'])
@patch('keyman_config.gsettings.GSettings.set')
def test_uninstallFromIbus_KbInstalled(self, patched_settings_set, patched_settings_get, patched_time_sleep, MockIbusBusClass):
# Setup
mock_ibusBusInstance = MockIbusBusClass.return_value
# Execute
uninstall_from_ibus(mock_ibusBusInstance, 'k2')
# Verify
patched_settings_set.assert_called_once_with(
"preload-engines", ['k1', 'k3'], 'as')
mock_ibusBusInstance.preload_engines.assert_called_once_with(
['k1', 'k3'])
@patch('keyman_config.gsettings.GSettings.get', return_value=['k1', 'k2', 'k3'])
@patch('keyman_config.gsettings.GSettings.set')
def test_uninstallFromIbus_KbNotInstalled(self, patched_settings_set, patched_settings_get, patched_time_sleep, MockIbusBusClass):
# Setup
mock_ibusBusInstance = MockIbusBusClass.return_value
# Execute
uninstall_from_ibus(mock_ibusBusInstance, 'k4')
# Verify
patched_settings_set.assert_called_once_with(
"preload-engines", ['k1', 'k2', 'k3'], 'as')
mock_ibusBusInstance.preload_engines.assert_called_once_with(
['k1', 'k2', 'k3'])
if __name__ == '__main__':
unittest.main()