Files
life-echo/api/tests/test_session_history.py

45 lines
1.6 KiB
Python
Raw Normal View History

2026-03-20 15:15:35 +08:00
"""session_history 纯映射测试ConversationService 的会话层,非 Agent"""
import unittest
from datetime import datetime, timezone
from app.features.conversation.models import Segment
from app.features.conversation.session_history import segments_to_redis_history
class SegmentsToRedisHistoryTest(unittest.TestCase):
def test_text_turn_maps_to_human_and_ai(self):
seg = Segment(
id="s1",
conversation_id="c1",
transcript_text="我在杭州长大",
audio_url=None,
created_at=datetime(2024, 1, 2, 3, 4, 5, tzinfo=timezone.utc),
agent_response="听起来很温润的城市。",
)
h = segments_to_redis_history([seg])
self.assertEqual(len(h), 2)
self.assertEqual(h[0]["role"], "human")
self.assertEqual(h[0]["messageType"], "text")
self.assertEqual(h[0]["content"], "我在杭州长大")
self.assertEqual(h[1]["role"], "ai")
self.assertEqual(h[1]["content"], "听起来很温润的城市。")
def test_voice_segment_sets_voice_session_id(self):
seg = Segment(
id="s1",
conversation_id="c1",
transcript_text="",
audio_url="audio-segment:vs-9:0",
created_at=datetime(2024, 1, 2, tzinfo=timezone.utc),
agent_response=None,
)
h = segments_to_redis_history([seg])
self.assertEqual(len(h), 1)
self.assertEqual(h[0]["messageType"], "audio")
self.assertEqual(h[0]["voiceSessionId"], "vs-9")
if __name__ == "__main__":
unittest.main()