"""API tests for resolution output endpoints."""
import pytest
from unittest.mock import patch
from httpx import AsyncClient

from app.models.ai_session import AISession
from app.models.session_resolution_output import SessionResolutionOutput


@pytest.mark.asyncio
async def test_get_outputs_empty(client: AsyncClient, test_user, auth_headers, test_db):
    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="guided",
        conversation_messages=[],
    )
    test_db.add(session)
    await test_db.commit()

    resp = await client.get(f"/api/v1/ai-sessions/{session.id}/outputs", headers=auth_headers)
    assert resp.status_code == 200
    assert resp.json()["outputs"] == []


@pytest.mark.asyncio
async def test_edit_output_api(client: AsyncClient, test_user, auth_headers, test_db):
    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="resolved",
        confidence_tier="guided",
        conversation_messages=[],
        resolution_summary="Fixed",
    )
    test_db.add(session)
    await test_db.flush()

    output = SessionResolutionOutput(
        session_id=session.id,
        output_type="psa_ticket_notes",
        generated_content="Original",
        status="draft",
        generated_by_model="claude-sonnet-4-6",
    )
    test_db.add(output)
    await test_db.commit()

    resp = await client.patch(
        f"/api/v1/ai-sessions/{session.id}/outputs/{output.id}",
        headers=auth_headers,
        json={"edited_content": "My edited version"},
    )
    assert resp.status_code == 200
    assert resp.json()["edited_content"] == "My edited version"
