Files
MoviePilot/tests/test_agent_background_output.py

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()