"""API endpoint tests for session handoffs."""
import pytest
from httpx import AsyncClient

from app.models.ai_session import AISession


@pytest.mark.asyncio
async def test_create_park_handoff_api(client: AsyncClient, test_user, auth_headers, test_db):
    """POST /ai-sessions/{id}/handoff with intent=park."""
    session = AISession(
        user_id=test_user["user_data"]["id"],
        account_id=test_user["user_data"]["account_id"],
        session_type="guided",
        intake_type="free_text",
        intake_content={"text": "test"},
        status="active",
        confidence_tier="discovery",
        conversation_messages=[],
    )
    test_db.add(session)
    await test_db.commit()

    resp = await client.post(
        f"/api/v1/ai-sessions/{session.id}/handoff",
        headers=auth_headers,
        json={"intent": "park", "engineer_notes": "Waiting for logs"},
    )
    assert resp.status_code == 201
    data = resp.json()
    assert data["intent"] == "park"


@pytest.mark.asyncio
async def test_get_queue(client: AsyncClient, test_user, auth_headers, test_db):
    """GET /ai-sessions/queue returns unclaimed handoffs."""
    session = AISession(
        user_id=test_user["user_data"]["id"],
        account_id=test_user["user_data"]["account_id"],
        session_type="guided",
        intake_type="free_text",
        intake_content={"text": "test"},
        status="active",
        confidence_tier="discovery",
        conversation_messages=[],
    )
    test_db.add(session)
    await test_db.commit()

    # Create a handoff
    await client.post(
        f"/api/v1/ai-sessions/{session.id}/handoff",
        headers=auth_headers,
        json={"intent": "escalate", "engineer_notes": "Need help"},
    )

    resp = await client.get("/api/v1/ai-sessions/queue", headers=auth_headers)
    assert resp.status_code == 200
    data = resp.json()
    assert len(data) >= 1
