Files
social-app/backend/tests/integration/test_agent_chat_routes.py
T

79 lines
2.3 KiB
Python
Raw Normal View History

from __future__ import annotations
from typing import Callable
from uuid import UUID
from fastapi.testclient import TestClient
from app import app
from v1.agent_chat.dependencies import get_agent_chat_service
from v1.agent_chat.schemas import (
AgentChatEvent,
AgentChatRunRequest,
AgentChatRunResponse,
)
from v1.agent_chat.service import AgentChatService
class FakeAgentChatService:
async def run(self, payload: AgentChatRunRequest) -> AgentChatRunResponse:
return AgentChatRunResponse(
session_id=UUID("00000000-0000-0000-0000-000000000001"),
output=payload.message,
events=[
AgentChatEvent(
type="run.started", run_id="00000000-0000-0000-0000-000000000001"
),
AgentChatEvent(
type="message.delta", message_id="m1", delta=payload.message
),
AgentChatEvent(
type="run.completed",
run_id="00000000-0000-0000-0000-000000000001",
output=payload.message,
),
],
)
def _override_agent_chat_service(
service: FakeAgentChatService,
) -> Callable[[], AgentChatService]:
def _get_service() -> AgentChatService:
return service # type: ignore[return-value]
return _get_service
def test_run_route_returns_response() -> None:
app.dependency_overrides[get_agent_chat_service] = _override_agent_chat_service(
FakeAgentChatService()
)
client = TestClient(app)
try:
2026-02-26 14:43:52 +08:00
response = client.post("/api/v1/agent-chat", json={"message": "hello"})
assert response.status_code == 200
body = response.json()
assert body["output"] == "hello"
assert [event["type"] for event in body["events"]] == [
"run.started",
"message.delta",
"run.completed",
]
finally:
app.dependency_overrides = {}
def test_run_route_validates_payload() -> None:
app.dependency_overrides[get_agent_chat_service] = _override_agent_chat_service(
FakeAgentChatService()
)
client = TestClient(app)
try:
2026-02-26 14:43:52 +08:00
response = client.post("/api/v1/agent-chat", json={"message": ""})
assert response.status_code == 422
finally:
app.dependency_overrides = {}