Files
hermes-webui/tests/test_session_message_window_renderable_tail.py
T

59 lines
1.8 KiB
Python

from api.routes import _message_window_for_display
def test_initial_msg_limit_skips_trailing_tool_only_rows():
messages = [
{"role": "user", "content": "question"},
{"role": "assistant", "content": "answer"},
] + [
{"role": "tool", "content": f"tool result {idx}"}
for idx in range(40)
]
window, offset = _message_window_for_display(messages, msg_limit=5)
assert [m["role"] for m in window] == ["user", "assistant"]
assert offset == 0
def test_msg_limit_keeps_raw_tail_when_it_has_renderable_rows():
messages = [
{"role": "user", "content": f"u{idx}"} if idx % 2 == 0 else {"role": "assistant", "content": f"a{idx}"}
for idx in range(10)
]
window, offset = _message_window_for_display(messages, msg_limit=4)
assert [m["content"] for m in window] == ["u6", "a7", "u8", "a9"]
assert offset == 6
def test_msg_before_anchors_page_before_trailing_tool_rows():
messages = [
{"role": "user", "content": "older"},
{"role": "assistant", "content": "visible before tools"},
] + [
{"role": "tool", "content": f"hidden {idx}"}
for idx in range(12)
] + [
{"role": "assistant", "content": "newer visible"},
]
window, offset = _message_window_for_display(messages, msg_limit=3, msg_before=14)
assert [m["role"] for m in window] == ["user", "assistant"]
assert [m["content"] for m in window] == ["older", "visible before tools"]
assert offset == 0
def test_all_tool_session_keeps_tail_fallback():
messages = [
{"role": "tool", "content": f"tool {idx}"}
for idx in range(6)
]
window, offset = _message_window_for_display(messages, msg_limit=3)
assert [m["content"] for m in window] == ["tool 3", "tool 4", "tool 5"]
assert offset == 3