Files
open-xiaoai/examples/hass/tests/test_assistant_session.py
T

54 lines
1.5 KiB
Python
Raw Normal View History

import asyncio
import pytest
from hass_assistant import ConversationSession
@pytest.mark.asyncio
async def test_session_idle_timeout_triggers_end():
session = ConversationSession(
enabled=True,
idle_timeout_seconds=1,
end_keywords=["再见", "拜拜", "滚", "退下"],
)
triggered = {"value": False}
async def on_timeout():
triggered["value"] = True
session.restart_idle_timer(on_timeout)
await asyncio.sleep(1.2)
assert triggered["value"] is True
await session.close()
def test_session_end_keyword_contains_match():
session = ConversationSession(
enabled=True,
idle_timeout_seconds=15,
end_keywords=["再见", "拜拜", "滚", "退下"],
)
assert session.match_end_keyword("那就先这样吧,再见哈") == "再见"
assert session.match_end_keyword("你先退下吧") == "退下"
assert session.match_end_keyword("继续聊聊") is None
def test_session_area_mapping_hit_and_miss():
session = ConversationSession(
enabled=True,
idle_timeout_seconds=15,
end_keywords=["再见"],
)
mapping = {"192.168.1.101": "客厅"}
assert session.resolve_area("192.168.1.101", mapping) == "客厅"
assert session.resolve_area("192.168.1.102", mapping) is None
assert session.resolve_area(None, mapping) is None
prefix = session.build_area_prefix("客厅")
assert "当前用户对话所在区域:客厅" in prefix