55 lines
2.2 KiB
Python
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}
|
|
}
|