Files
ea-chatbot-lg/backend/tests/test_history_mapping.py

44 lines
1.6 KiB
Python

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"