feat: govern effective appearance defaults
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
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}
|
||||
}
|
||||
Reference in New Issue
Block a user