test_report_compat_proxy_body.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import json
  2. import importlib.util
  3. import unittest
  4. from pathlib import Path
  5. from types import SimpleNamespace
  6. from models.report import ReportCompleteFlowRequest
  7. REPORT_COMPAT_PATH = Path(__file__).resolve().parents[1] / "routers" / "report_compat.py"
  8. spec = importlib.util.spec_from_file_location("report_compat_under_test", REPORT_COMPAT_PATH)
  9. report_compat = importlib.util.module_from_spec(spec)
  10. spec.loader.exec_module(report_compat)
  11. _build_aichat_complete_flow_body = report_compat._build_aichat_complete_flow_body
  12. def _fake_request(user_id: int = 70430):
  13. return SimpleNamespace(
  14. state=SimpleNamespace(
  15. user=SimpleNamespace(user_id=user_id)
  16. )
  17. )
  18. class ReportCompatProxyBodyTest(unittest.TestCase):
  19. def test_new_conversation_zero_is_forwarded_to_aichat(self):
  20. request_data = ReportCompleteFlowRequest(
  21. user_question="专业问题",
  22. ai_conversation_id=0,
  23. )
  24. body = _build_aichat_complete_flow_body(request_data, _fake_request())
  25. payload = json.loads(body.decode("utf-8"))
  26. self.assertEqual(payload["ai_conversation_id"], 0)
  27. def test_missing_conversation_id_is_forwarded_as_zero(self):
  28. request_data = ReportCompleteFlowRequest(
  29. user_question="专业问题",
  30. )
  31. body = _build_aichat_complete_flow_body(request_data, _fake_request())
  32. payload = json.loads(body.decode("utf-8"))
  33. self.assertEqual(payload["ai_conversation_id"], 0)
  34. def test_existing_conversation_id_is_preserved(self):
  35. request_data = ReportCompleteFlowRequest(
  36. user_question="继续追问",
  37. ai_conversation_id=11226,
  38. )
  39. body = _build_aichat_complete_flow_body(request_data, _fake_request())
  40. payload = json.loads(body.decode("utf-8"))
  41. self.assertEqual(payload["ai_conversation_id"], 11226)
  42. if __name__ == "__main__":
  43. unittest.main()