54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
"""Tests for UI helper functions."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from cheddahbot.ui import _messages_to_chatbot
|
|
|
|
|
|
class TestMessagesToChatbot:
|
|
"""_messages_to_chatbot converts DB messages to Gradio chatbot format."""
|
|
|
|
def test_converts_user_and_assistant(self):
|
|
messages = [
|
|
{"role": "user", "content": "Hello"},
|
|
{"role": "assistant", "content": "Hi there"},
|
|
]
|
|
result = _messages_to_chatbot(messages)
|
|
assert result == [
|
|
{"role": "user", "content": "Hello"},
|
|
{"role": "assistant", "content": "Hi there"},
|
|
]
|
|
|
|
def test_skips_tool_messages(self):
|
|
messages = [
|
|
{"role": "user", "content": "Search for X"},
|
|
{"role": "assistant", "content": "Let me search..."},
|
|
{"role": "tool", "content": '{"results": []}'},
|
|
{"role": "assistant", "content": "Here are the results."},
|
|
]
|
|
result = _messages_to_chatbot(messages)
|
|
assert len(result) == 3
|
|
assert all(m["role"] in ("user", "assistant") for m in result)
|
|
|
|
def test_skips_empty_content(self):
|
|
messages = [
|
|
{"role": "user", "content": "Hi"},
|
|
{"role": "assistant", "content": ""},
|
|
{"role": "assistant", "content": "Real response"},
|
|
]
|
|
result = _messages_to_chatbot(messages)
|
|
assert len(result) == 2
|
|
assert result[1]["content"] == "Real response"
|
|
|
|
def test_empty_input(self):
|
|
assert _messages_to_chatbot([]) == []
|
|
|
|
def test_skips_system_messages(self):
|
|
messages = [
|
|
{"role": "system", "content": "You are a bot"},
|
|
{"role": "user", "content": "Hi"},
|
|
]
|
|
result = _messages_to_chatbot(messages)
|
|
assert len(result) == 1
|
|
assert result[0]["role"] == "user"
|