Files
inquiry_robot/inquiry-agent/tests/test_mode_attachment_text.py
T

71 lines
2.0 KiB
Python

"""
千问附件文本:只整理抽出原文,不算缺项。
"""
from __future__ import annotations
import os
import sys
import unittest
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if ROOT not in sys.path:
sys.path.insert(0, ROOT)
from agent.llm.mode_attachment_text import invoke_attachment_text, invoke_shell
from agent.llm.modes import LlmMode
class ModeAttachmentTextTests(unittest.TestCase):
def test_shell_uses_raw_text(self) -> None:
got = invoke_shell(payload={"raw_text": "海运 宁波到汉堡 1x40HQ"})
self.assertTrue(got["ok"])
self.assertIn("宁波到汉堡", got["text"])
self.assertFalse(got["empty"])
def test_blank_is_empty(self) -> None:
got = invoke_shell(payload={"assistant_text": " "})
self.assertTrue(got["ok"])
self.assertTrue(got["empty"])
def test_injected_chat_gets_raw_only(self) -> None:
seen: dict = {}
class _R:
ok = True
content = "海运 上海到洛杉矶"
error = ""
def chat(**kwargs):
seen.update(kwargs)
return _R()
got = invoke_attachment_text(
payload={"raw_text": "# 询价\n海运\t上海到洛杉矶"},
chat_fn=chat,
allow_network=False,
)
self.assertTrue(got["ok"])
self.assertEqual(got["text"], "海运 上海到洛杉矶")
self.assertEqual(seen["mode"], LlmMode.ATTACHMENT_TEXT)
sys_msg = seen["messages"][0]["content"]
self.assertIn("不要猜", sys_msg)
self.assertNotIn("缺项", seen["messages"][1]["content"] or "x")
def test_chat_fail(self) -> None:
class _R:
ok = False
content = ""
error = "timeout"
got = invoke_attachment_text(
payload={"raw_text": "海运"},
chat_fn=lambda **_k: _R(),
)
self.assertFalse(got["ok"])
self.assertEqual(got["error"], "timeout")
if __name__ == "__main__":
unittest.main()