honcho/examples/crewai/python/tests/test_tools.py

118 lines
3.3 KiB
Python

"""
Tests for Honcho CrewAI tools.
"""
from honcho_crewai import (
HonchoDialecticTool,
HonchoGetContextTool,
HonchoSearchTool,
)
from test_storage import FakeHoncho
class TestGetContextTool:
def test_initialization_is_lazy(self):
honcho = FakeHoncho()
tool = HonchoGetContextTool(
honcho=honcho,
session_id="session-1",
peer_id="user-1",
)
assert tool.name == "get_session_context"
assert honcho.session_calls == []
def test_returns_formatted_context(self):
honcho = FakeHoncho()
peer = honcho.peer("user-1")
session = honcho.session("session-1")
session.add_messages([peer.message("Test message for context")])
honcho.session_calls.clear()
tool = HonchoGetContextTool(
honcho=honcho,
session_id="session-1",
peer_id="user-1",
)
result = tool._run()
assert "Messages (1)" in result
assert "user-1: Test message for context" in result
assert honcho.session_calls == ["session-1"]
class TestDialecticTool:
def test_initialization_is_lazy(self):
honcho = FakeHoncho()
tool = HonchoDialecticTool(
honcho=honcho,
session_id="session-1",
peer_id="user-1",
)
assert tool.name == "query_peer_knowledge"
assert honcho.peer_calls == []
def test_returns_response(self):
honcho = FakeHoncho()
tool = HonchoDialecticTool(
honcho=honcho,
session_id="session-1",
peer_id="user-1",
)
result = tool._run(query="What does the user like?")
assert "answer: What does the user like?" in result
assert honcho.peer_calls == ["user-1"]
class TestSearchTool:
def test_initialization_is_lazy(self):
honcho = FakeHoncho()
tool = HonchoSearchTool(honcho=honcho, session_id="session-1")
assert tool.name == "search_session_messages"
assert honcho.session_calls == []
def test_returns_formatted_results(self):
honcho = FakeHoncho()
peer = honcho.peer("user-1")
session = honcho.session("session-1")
session.add_messages([peer.message("I love pizza and pasta")])
honcho.session_calls.clear()
tool = HonchoSearchTool(honcho=honcho, session_id="session-1")
result = tool._run(query="food", limit=5)
assert "Search Results" in result
assert "[user-1] I love pizza and pasta" in result
assert honcho.session_calls == ["session-1"]
class TestToolsWorkTogether:
def test_all_tools_in_same_session(self):
honcho = FakeHoncho()
peer = honcho.peer("user-1")
session = honcho.session("session-1")
session.add_messages([peer.message("I enjoy coding in Python")])
context_tool = HonchoGetContextTool(
honcho=honcho,
session_id="session-1",
peer_id="user-1",
)
dialectic_tool = HonchoDialecticTool(
honcho=honcho,
session_id="session-1",
peer_id="user-1",
)
search_tool = HonchoSearchTool(honcho=honcho, session_id="session-1")
assert context_tool._run()
assert dialectic_tool._run(query="What does the user like?")
assert search_tool._run(query="coding", limit=5)