37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
import pytest
|
|
from unittest.mock import MagicMock, patch
|
|
import os
|
|
import sys
|
|
|
|
# Ensure project root is in path
|
|
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
|
|
|
from simulation.sim_tools import ToolsSimulation
|
|
|
|
def test_tools_simulation_run():
|
|
mock_client = MagicMock()
|
|
mock_client.wait_for_server.return_value = True
|
|
|
|
# Mock session entries with tool output
|
|
mock_session = {
|
|
'session': {
|
|
'entries': [
|
|
{'role': 'User', 'content': 'List files'},
|
|
{'role': 'Tool', 'content': 'aggregate.py, ai_client.py', 'tool_call_id': 'call_1'},
|
|
{'role': 'AI', 'content': 'The files are: aggregate.py, ai_client.py'}
|
|
]
|
|
}
|
|
}
|
|
mock_client.get_session.return_value = mock_session
|
|
|
|
with patch('simulation.sim_base.WorkflowSimulator') as mock_sim_class:
|
|
mock_sim = MagicMock()
|
|
mock_sim_class.return_value = mock_sim
|
|
|
|
sim = ToolsSimulation(mock_client)
|
|
sim.run()
|
|
|
|
# Verify calls
|
|
mock_sim.run_discussion_turn.assert_any_call("List the files in the current directory.")
|
|
mock_sim.run_discussion_turn.assert_any_call("Read the first 10 lines of aggregate.py.")
|