mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-06 08:55:34 +00:00
114 lines
4.1 KiB
Python
114 lines
4.1 KiB
Python
#!/usr/bin/python3
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from keyman_config.gsettings import GSettings
|
|
|
|
class GSettingsTests(unittest.TestCase):
|
|
def setUp(self):
|
|
patcher = patch('keyman_config.gsettings.Gio.Settings.new')
|
|
self.MockSettingsClass = patcher.start()
|
|
self.addCleanup(patcher.stop)
|
|
|
|
def test_ConvertArrayToVariantToArray_Empty_Gnome(self):
|
|
# Setup
|
|
children = []
|
|
sut = GSettings('org.gnome.desktop.input-sources')
|
|
# Execute
|
|
variant = sut._convert_array_to_variant(children, 'a(ss)')
|
|
array = sut._convert_variant_to_array(variant)
|
|
|
|
# Verify
|
|
self.assertEqual(array, children)
|
|
|
|
def test_ConvertArrayToVariantToArray_OneElement_Gnome(self):
|
|
# Setup
|
|
children = [('t1', 'id1')]
|
|
sut = GSettings('org.gnome.desktop.input-sources')
|
|
# Execute
|
|
variant = sut._convert_array_to_variant(children, 'a(ss)')
|
|
array = sut._convert_variant_to_array(variant)
|
|
|
|
# Verify
|
|
self.assertEqual(array, children)
|
|
|
|
def test_ConvertArrayToVariantToArray_MultipleElements_Gnome(self):
|
|
# Setup
|
|
children = [('t1', 'id1'), ('t2', 'id2')]
|
|
sut = GSettings('org.gnome.desktop.input-sources')
|
|
# Execute
|
|
variant = sut._convert_array_to_variant(children, 'a(ss)')
|
|
array = sut._convert_variant_to_array(variant)
|
|
|
|
# Verify
|
|
self.assertEqual(array, children)
|
|
|
|
def test_ConvertArrayToVariantToArray_Empty_Ibus(self):
|
|
# Setup
|
|
children = []
|
|
sut = GSettings('org.gnome.desktop.input-sources')
|
|
# Execute
|
|
variant = sut._convert_array_to_variant(children, 'as')
|
|
array = sut._convert_variant_to_array(variant)
|
|
|
|
# Verify
|
|
self.assertEqual(array, children)
|
|
|
|
def test_ConvertArrayToVariantToArray_OneElement_Ibus(self):
|
|
# Setup
|
|
children = ['t1']
|
|
sut = GSettings('org.gnome.desktop.input-sources')
|
|
# Execute
|
|
variant = sut._convert_array_to_variant(children, 'as')
|
|
array = sut._convert_variant_to_array(variant)
|
|
|
|
# Verify
|
|
self.assertEqual(array, children)
|
|
|
|
def test_ConvertArrayToVariantToArray_MultipleElements_Ibus(self):
|
|
# Setup
|
|
children = ['t1', 'id1', 't2', 'id2']
|
|
sut = GSettings('org.gnome.desktop.input-sources')
|
|
# Execute
|
|
variant = sut._convert_array_to_variant(children, 'as')
|
|
array = sut._convert_variant_to_array(variant)
|
|
|
|
# Verify
|
|
self.assertEqual(array, children)
|
|
|
|
@patch.object(GSettings, '_convert_variant_to_array')
|
|
def test_GSettings_get(self, convertVariantToArrayMethod):
|
|
# Setup
|
|
keyboards = [('xkb', 'en')]
|
|
mock_settingsInstance = self.MockSettingsClass.return_value
|
|
mock_settingsInstance.get_value.return_value = keyboards
|
|
convertVariantToArrayMethod.side_effect = lambda value: value
|
|
sut = GSettings('org.gnome.desktop.input-sources')
|
|
# Execute
|
|
result = sut.get('sources')
|
|
# Verify
|
|
self.assertEqual(result, keyboards)
|
|
|
|
@patch.object(GSettings, '_convert_array_to_variant')
|
|
def test_GSettings_set_gnome(self, convertArrayToVariantMethod):
|
|
# Setup
|
|
convertArrayToVariantMethod.side_effect = lambda value, type: value
|
|
sut = GSettings('org.gnome.desktop.input-sources')
|
|
keyboards = [('xkb', 'en'), ('ibus', 'fooDir/foo1.kmx'), ('ibus', 'fooDir/foo2.kmx')]
|
|
# Execute
|
|
sut.set('sources', keyboards, 'a(ss)')
|
|
# Verify
|
|
self.MockSettingsClass.return_value.set_value.assert_called_once_with(
|
|
'sources', keyboards)
|
|
|
|
@patch.object(GSettings, '_convert_array_to_variant')
|
|
def test_GSettings_set_ibus(self, convertArrayToVariantMethod):
|
|
# Setup
|
|
convertArrayToVariantMethod.side_effect = lambda value, type: value
|
|
sut = GSettings('org.freedesktop.ibus.general')
|
|
keyboards = ['xkb:us::eng', 'de:fooDir/foo1.kmx', 'fr:fooDir/foo2.kmx']
|
|
# Execute
|
|
sut.set('sources', keyboards, 'as')
|
|
# Verify
|
|
self.MockSettingsClass.return_value.set_value.assert_called_once_with(
|
|
'sources', keyboards)
|