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)],
    }
    DashboardLayoutPayload.model_validate(small)

    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()) == small
