Files
govoplan-core/tests/test_appearance.py
T

55 lines
2.2 KiB
Python

from __future__ import annotations
from govoplan_core.core.appearance import resolve_effective_appearance, update_appearance_settings
def test_appearance_precedence_and_inheritance() -> None:
decision = resolve_effective_appearance(
system_settings={"appearance": {"default_palette": "civic_blue"}},
tenant_settings={"appearance": {"default_palette": "forest"}},
user_settings={"ui": {"palette": "plum"}},
)
assert (decision.palette, decision.source, decision.locked) == ("plum", "user", False)
inherited = resolve_effective_appearance(
system_settings={"appearance": {"default_palette": "civic_blue"}},
tenant_settings={"appearance": {"default_palette": "forest"}},
user_settings={"ui": {"palette": None}},
)
assert (inherited.palette, inherited.source) == ("forest", "tenant")
def test_system_lock_wins_and_invalid_values_fail_safe() -> None:
decision = resolve_effective_appearance(
system_settings={"appearance": {"default_palette": "civic_blue", "palette_locked": True}},
tenant_settings={"appearance": {"default_palette": "forest", "palette_locked": True}},
user_settings={"ui": {"palette": "plum"}},
)
assert decision.as_dict() == {
"palette": "civic_blue",
"source": "system_lock",
"locked": True,
"system_default_palette": "civic_blue",
"tenant_default_palette": "forest",
"inherited_palette": "civic_blue",
}
fallback = resolve_effective_appearance(
system_settings={"appearance": {"default_palette": "unsafe"}},
tenant_settings={},
user_settings={"ui": {"palette": "unknown"}},
)
assert (fallback.palette, fallback.source) == ("default", "system")
def test_appearance_settings_reset_without_touching_neighbors() -> None:
configured = update_appearance_settings(
{"neighbor": {"kept": True}},
default_palette="forest",
palette_locked=True,
)
assert configured["neighbor"] == {"kept": True}
assert configured["appearance"] == {"default_palette": "forest", "palette_locked": True}
assert update_appearance_settings(configured, default_palette=None, palette_locked=False) == {
"neighbor": {"kept": True}
}