"""Operate lists only invocations Core admits for the project."""

from src.domain.cloud.operate_catalog import admitted_operate_invocations


def _ids(settings: dict | None = None) -> set[str]:
    return {row["id"] for row in admitted_operate_invocations(settings)}


def test_default_catalog_uses_payment_queue_ids_and_checkout_fields():
    rows = {row["id"]: row for row in admitted_operate_invocations({})}
    checkout = rows["payment.checkout.create"]
    assert checkout["capability"] == "payments.checkout.create"
    assert checkout["request_type"] == "payment.checkout.create"
    assert set(checkout["example"]) >= {"success_url", "cancel_url", "items"}
    assert "crm.contact.search" in rows
    assert rows["crm.contact.search"]["request_type"] == "integration.execute"
    assert "payment.capture" in rows
    assert "payment.refund" in rows


def test_integrations_entitlement_hides_crm_and_automation():
    ids = _ids({"cloud_capabilities": {"integrations.execute": False}})
    assert "crm.contact.search" not in ids
    assert "automation.workflow.trigger" not in ids
    assert "payment.checkout.create" in ids


def test_payment_rows_follow_allowed_request_types():
    ids = _ids({"cloud_allowed_request_types": ["email.send"]})
    assert "payment.checkout.create" not in ids
    assert "crm.deal.search" in ids
