118 lines
3.3 KiB
Python
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)
|