from uuid import UUID

from src.domain.integration_events.command_catalog import CONTROL_PLANE_COMMANDS
from src.domain.integration_events.schemas import (
    ControlPlaneCommandRequest,
    ControlPlaneCommandResponse,
)


def test_control_plane_commands_remain_core_owned():
    assert set(CONTROL_PLANE_COMMANDS) == {
        "workspace.create",
        "workspace.member.invite",
        "project.create",
        "project.archive",
        "project.deploy",
    }
    assert all(item["owner"] == "core" for item in CONTROL_PLANE_COMMANDS.values())
    assert all(item["requires_user_principal"] for item in CONTROL_PLANE_COMMANDS.values())


def test_control_plane_envelope_preserves_tenant_and_replay_fields():
    workspace_id = UUID("00000000-0000-0000-0000-000000000001")
    request = ControlPlaneCommandRequest(
        command="project.create",
        command_id="cmd-1",
        idempotency_key="idem-1",
        workspace_id=workspace_id,
        input={"name": "Acme site", "intent": "marketing site"},
    )
    assert request.workspace_id == workspace_id
    assert request.input["intent"] == "marketing site"


def test_control_plane_response_is_json_ready():
    response = ControlPlaneCommandResponse(
        command="project.archive",
        command_id="cmd-2",
        result={"archived": True},
    )
    assert response.model_dump(mode="json")["result"]["archived"] is True
