62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
from pathlib import Path
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
|
|
from cthulhu import settings_manager
|
|
|
|
|
|
def _manager(tmp_path: Path):
|
|
manager = settings_manager.SettingsManager(mock.Mock())
|
|
manager.activate(prefsDir=str(tmp_path))
|
|
return manager
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_registry_defaults_to_default_profile(tmp_path):
|
|
_manager(tmp_path)
|
|
from cthulhu import gsettings_registry
|
|
|
|
registry = gsettings_registry.get_registry()
|
|
registry.clear_runtime_values()
|
|
|
|
assert registry.get_active_profile() == "default"
|
|
assert registry.get_active_app() is None
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_runtime_override_wins_over_toml(tmp_path):
|
|
_manager(tmp_path)
|
|
from cthulhu import gsettings_registry
|
|
|
|
registry = gsettings_registry.get_registry()
|
|
registry.set_runtime_value("keybindings", "keyboard-layout", "laptop")
|
|
|
|
assert registry.layered_lookup(
|
|
"keybindings",
|
|
"keyboard-layout",
|
|
"",
|
|
default="desktop",
|
|
) == "laptop"
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_save_schema_writes_toml_not_dconf(tmp_path):
|
|
_manager(tmp_path)
|
|
from cthulhu import gsettings_registry
|
|
|
|
registry = gsettings_registry.get_registry()
|
|
registry.save_schema(
|
|
"keybindings",
|
|
{"keyboard-layout": "laptop", "laptop-modifier-keys": ["Caps_Lock"]},
|
|
"default",
|
|
"",
|
|
skip_defaults=False,
|
|
)
|
|
|
|
text = Path(tmp_path, "user-settings.toml").read_text(encoding="utf-8")
|
|
assert "keyboard-layout" in text
|
|
assert "laptop-modifier-keys" in text
|
|
assert "org.gnome.Orca" not in text
|
|
assert "dconf" not in text
|