| from types import SimpleNamespace |
| from unittest.mock import MagicMock, patch |
|
|
| from run_agent import AIAgent |
|
|
|
|
| def _mock_response(*, usage: dict, content: str = "done"): |
| msg = SimpleNamespace(content=content, tool_calls=None) |
| choice = SimpleNamespace(message=msg, finish_reason="stop") |
| return SimpleNamespace( |
| choices=[choice], |
| model="test/model", |
| usage=SimpleNamespace(**usage), |
| ) |
|
|
|
|
| def _make_agent(session_db, *, platform: str): |
| with ( |
| patch("run_agent.get_tool_definitions", return_value=[]), |
| patch("run_agent.check_toolset_requirements", return_value={}), |
| patch("run_agent.OpenAI"), |
| ): |
| agent = AIAgent( |
| api_key="test-key", |
| quiet_mode=True, |
| skip_context_files=True, |
| skip_memory=True, |
| session_db=session_db, |
| session_id=f"{platform}-session", |
| platform=platform, |
| ) |
| agent.client = MagicMock() |
| agent.client.chat.completions.create.return_value = _mock_response( |
| usage={ |
| "prompt_tokens": 11, |
| "completion_tokens": 7, |
| "total_tokens": 18, |
| } |
| ) |
| return agent |
|
|
|
|
| def test_run_conversation_persists_tokens_for_telegram_sessions(): |
| session_db = MagicMock() |
| agent = _make_agent(session_db, platform="telegram") |
|
|
| result = agent.run_conversation("hello") |
|
|
| assert result["final_response"] == "done" |
| session_db.update_token_counts.assert_called_once() |
| assert session_db.update_token_counts.call_args.args[0] == "telegram-session" |
|
|
|
|
| def test_run_conversation_persists_tokens_for_cron_sessions(): |
| session_db = MagicMock() |
| agent = _make_agent(session_db, platform="cron") |
|
|
| result = agent.run_conversation("hello") |
|
|
| assert result["final_response"] == "done" |
| session_db.update_token_counts.assert_called_once() |
| assert session_db.update_token_counts.call_args.args[0] == "cron-session" |
|
|