feat(history): Implement map_db_messages_to_langchain utility
This commit is contained in:
43
backend/tests/test_history_mapping.py
Normal file
43
backend/tests/test_history_mapping.py
Normal file
@@ -0,0 +1,43 @@
|
||||
import pytest
|
||||
from ea_chatbot.history.models import Message
|
||||
from ea_chatbot.history.utils import map_db_messages_to_langchain
|
||||
from langchain_core.messages import HumanMessage, AIMessage
|
||||
|
||||
def test_map_db_messages_to_langchain():
|
||||
"""
|
||||
Test that DB Message objects are correctly mapped to LangChain message objects.
|
||||
"""
|
||||
# 1. Setup mock DB messages
|
||||
m1 = Message(role="user", content="Hello")
|
||||
m2 = Message(role="assistant", content="Hi there!")
|
||||
m3 = Message(role="user", content="How are you?")
|
||||
|
||||
db_messages = [m1, m2, m3]
|
||||
|
||||
# 2. Map
|
||||
lc_messages = map_db_messages_to_langchain(db_messages)
|
||||
|
||||
# 3. Assertions
|
||||
assert len(lc_messages) == 3
|
||||
|
||||
assert isinstance(lc_messages[0], HumanMessage)
|
||||
assert lc_messages[0].content == "Hello"
|
||||
|
||||
assert isinstance(lc_messages[1], AIMessage)
|
||||
assert lc_messages[1].content == "Hi there!"
|
||||
|
||||
assert isinstance(lc_messages[2], HumanMessage)
|
||||
assert lc_messages[2].content == "How are you?"
|
||||
|
||||
def test_map_db_messages_unknown_role():
|
||||
"""
|
||||
Test that unknown roles are handled gracefully (e.g., defaulted to HumanMessage or raising error).
|
||||
Let's assume we default to HumanMessage for safety, or just skip.
|
||||
"""
|
||||
m = Message(role="system", content="System instruction")
|
||||
lc_messages = map_db_messages_to_langchain([m])
|
||||
|
||||
# Depending on implementation choice. Let's say we support 'system' too.
|
||||
from langchain_core.messages import SystemMessage
|
||||
assert isinstance(lc_messages[0], SystemMessage)
|
||||
assert lc_messages[0].content == "System instruction"
|
||||
Reference in New Issue
Block a user