44 lines
1.6 KiB
Python
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"
|