/ tests / run_agent / test_token_persistence_non_cli.py
test_token_persistence_non_cli.py
 1  from types import SimpleNamespace
 2  from unittest.mock import MagicMock, patch
 3  
 4  from run_agent import AIAgent
 5  
 6  
 7  def _mock_response(*, usage: dict, content: str = "done"):
 8      msg = SimpleNamespace(content=content, tool_calls=None)
 9      choice = SimpleNamespace(message=msg, finish_reason="stop")
10      return SimpleNamespace(
11          choices=[choice],
12          model="test/model",
13          usage=SimpleNamespace(**usage),
14      )
15  
16  
17  def _make_agent(session_db, *, platform: str):
18      with (
19          patch("run_agent.get_tool_definitions", return_value=[]),
20          patch("run_agent.check_toolset_requirements", return_value={}),
21          patch("run_agent.OpenAI"),
22      ):
23          agent = AIAgent(
24              api_key="test-key",
25              base_url="https://openrouter.ai/api/v1",
26              quiet_mode=True,
27              skip_context_files=True,
28              skip_memory=True,
29              session_db=session_db,
30              session_id=f"{platform}-session",
31              platform=platform,
32          )
33      agent.client = MagicMock()
34      agent.client.chat.completions.create.return_value = _mock_response(
35          usage={
36              "prompt_tokens": 11,
37              "completion_tokens": 7,
38              "total_tokens": 18,
39          }
40      )
41      return agent
42  
43  
44  def test_run_conversation_persists_tokens_for_telegram_sessions():
45      session_db = MagicMock()
46      agent = _make_agent(session_db, platform="telegram")
47  
48      result = agent.run_conversation("hello")
49  
50      assert result["final_response"] == "done"
51      session_db.update_token_counts.assert_called_once()
52      assert session_db.update_token_counts.call_args.args[0] == "telegram-session"
53  
54  
55  def test_run_conversation_persists_tokens_for_cron_sessions():
56      session_db = MagicMock()
57      agent = _make_agent(session_db, platform="cron")
58  
59      result = agent.run_conversation("hello")
60  
61      assert result["final_response"] == "done"
62      session_db.update_token_counts.assert_called_once()
63      assert session_db.update_token_counts.call_args.args[0] == "cron-session"