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"