mitai-jinkendo/backend/tests/test_dashboard_widget_entitlements.py
Lars 9bc0cf70da
All checks were successful
Deploy Development / deploy (push) Successful in 49s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 15s
feat: Update widget catalog and enhance dashboard layout features
- Added new "Dashboard-Lab-Widgets" entry to the documentation for better guidance on widget configuration.
- Updated the app_dashboard version to 1.8.0 to reflect the introduction of widget catalog features and layout entitlements.
- Enhanced widget catalog entries to include optional feature requirements for better visibility and access control.
- Improved the DashboardLabPage to manage widget visibility based on feature entitlements, ensuring a more tailored user experience.
2026-04-08 07:21:49 +02:00

58 lines
2.0 KiB
Python

from dashboard_layout_schema import DashboardLayoutPayload
from dashboard_widget_entitlements import apply_entitlements_to_layout_dict, widget_id_allowed
def test_apply_entitlements_disables_widget_without_access(monkeypatch):
monkeypatch.setattr(
"dashboard_widget_entitlements.widget_id_allowed",
lambda wid, pid, conn: wid != "nutrition_detail_charts",
)
raw = {
"version": 1,
"widgets": [
{"id": "welcome", "enabled": True},
{"id": "nutrition_detail_charts", "enabled": True},
],
}
out = apply_entitlements_to_layout_dict(raw, "p", None)
assert {w["id"]: w["enabled"] for w in out["widgets"]} == {
"welcome": True,
"nutrition_detail_charts": False,
}
def test_apply_entitlements_leaves_welcome_on_when_all_blocked(monkeypatch):
monkeypatch.setattr(
"dashboard_widget_entitlements.widget_id_allowed",
lambda wid, pid, conn: False,
)
raw = {
"version": 1,
"widgets": [
{"id": "welcome", "enabled": False},
{"id": "nutrition_detail_charts", "enabled": False},
],
}
out = apply_entitlements_to_layout_dict(raw, "p", None)
assert any(w["id"] == "welcome" and w["enabled"] for w in out["widgets"])
def test_widget_id_allowed_false_for_unknown_id():
assert widget_id_allowed("not-a-widget", "p", None) is False
def test_full_default_layout_still_validates_after_entitlements(monkeypatch):
monkeypatch.setattr(
"dashboard_widget_entitlements.widget_id_allowed",
lambda wid, pid, conn: wid != "ai_pipeline_insight",
)
from dashboard_layout_schema import default_layout_dict
d = default_layout_dict()
d["widgets"] = [{**x, "enabled": x["id"] == "ai_pipeline_insight"} for x in d["widgets"]]
adj = apply_entitlements_to_layout_dict(d, "p", None)
p2 = DashboardLayoutPayload.model_validate(adj)
ai = next(w for w in p2.widgets if w.id == "ai_pipeline_insight")
assert ai.enabled is False
assert any(w.enabled for w in p2.widgets)