from dashboard_layout_schema import DashboardLayoutPayload, product_default_layout_dict from dashboard_widget_entitlements import widgets_catalog_admin_payload def test_widgets_catalog_admin_all_allowed(): p = widgets_catalog_admin_payload() assert p["catalog_version"] == 1 assert len(p["widgets"]) >= 1 assert all(w["allowed"] is True for w in p["widgets"]) def test_get_product_default_base_uses_code_when_no_row(monkeypatch): from system_dashboard_product_default import get_product_default_base_dict class _Cur: def execute(self, *a, **k): pass def fetchone(self): return None monkeypatch.setattr("system_dashboard_product_default.get_cursor", lambda _c: _Cur()) assert get_product_default_base_dict(object()) == product_default_layout_dict() def test_get_product_default_base_uses_db_when_valid(monkeypatch): from system_dashboard_product_default import get_product_default_base_dict from widget_catalog import ALLOWED_WIDGET_IDS small = { "version": 1, "widgets": [{"id": wid, "enabled": wid == "welcome"} for wid in sorted(ALLOWED_WIDGET_IDS)], } # Gleicher Pfad wie get_stored_product_default_validated: Widget-Configs werden normalisiert # (z. B. body_history_viz / nutrition_history_viz / fitness_history_viz: leere config → volle Defaults in to_stored_dict). expected = DashboardLayoutPayload.model_validate(small).to_stored_dict() class _Cur: def execute(self, *a, **k): pass def fetchone(self): return {"value": small} monkeypatch.setattr("system_dashboard_product_default.get_cursor", lambda _c: _Cur()) assert get_product_default_base_dict(object()) == expected