mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-05-11 00:39:22 +08:00
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
import unittest
|
|
from types import SimpleNamespace
|
|
from unittest.mock import AsyncMock, patch
|
|
|
|
from langchain_core.messages import AIMessage
|
|
|
|
from app.agent import MoviePilotAgent
|
|
from app.agent.memory import memory_manager
|
|
|
|
|
|
class _FakeGraphState:
|
|
def __init__(self, messages):
|
|
self.values = {"messages": messages}
|
|
|
|
|
|
class _FakeAgent:
|
|
def __init__(self, messages):
|
|
self._messages = messages
|
|
|
|
async def ainvoke(self, _payload, config=None):
|
|
return None
|
|
|
|
def get_state(self, _config):
|
|
return _FakeGraphState(self._messages)
|
|
|
|
|
|
class AgentBackgroundOutputTest(unittest.IsolatedAsyncioTestCase):
|
|
async def test_background_non_streaming_skips_send_when_output_persistence_disabled(self):
|
|
agent = MoviePilotAgent(session_id="bg-test", user_id="system")
|
|
agent.channel = None
|
|
agent.source = None
|
|
agent.suppress_user_reply = False
|
|
agent.persist_output_message = False
|
|
agent._tool_context = {"user_reply_sent": False}
|
|
agent._streamed_output = ""
|
|
agent.stream_handler = SimpleNamespace(
|
|
stop_streaming=AsyncMock(return_value=(False, ""))
|
|
)
|
|
agent._should_stream = lambda: False
|
|
agent._create_agent = lambda streaming=False: _FakeAgent(
|
|
[AIMessage(content="后台结果")]
|
|
)
|
|
agent.send_agent_message = AsyncMock()
|
|
|
|
with patch.object(memory_manager, "save_agent_messages") as save_messages:
|
|
await agent._execute_agent([])
|
|
|
|
agent.send_agent_message.assert_not_awaited()
|
|
save_messages.assert_called_once()
|
|
self.assertEqual("后台结果", agent._streamed_output)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|