import pytest from unittest.mock import AsyncMock, MagicMock from services.chat import ChatService @pytest.fixture def mock_api(): api = MagicMock() api.reset = AsyncMock() api.save_feedback = AsyncMock() return api @pytest.fixture def service(mock_api): return ChatService(mock_api) async def test_reset_delegates_to_api(service, mock_api): await service.reset("user1") mock_api.reset.assert_awaited_once_with("user1") async def test_save_feedback_delegates_to_api(service, mock_api): await service.save_feedback("user1", "질문", "답변", 1, "run-123") mock_api.save_feedback.assert_awaited_once_with("user1", "질문", "답변", 1, "run-123") async def test_save_feedback_with_no_run_id(service, mock_api): await service.save_feedback("user1", "질문", "답변", -1, None) mock_api.save_feedback.assert_awaited_once_with("user1", "질문", "답변", -1, None) def test_chat_returns_api_iterator(service, mock_api): sentinel = object() mock_api.chat = MagicMock(return_value=sentinel) result = service.chat("안녕", "user1", False) assert result is sentinel mock_api.chat.assert_called_once_with("안녕", "user1", False)