2025-11-04 08:01:20 +01:00
|
|
|
from unittest.mock import MagicMock
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-07 17:36:03 +01:00
|
|
|
from rp.core.enhanced_assistant import EnhancedAssistant
|
2025-11-04 08:01:20 +01:00
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
def test_enhanced_assistant_init():
|
|
|
|
|
mock_base = MagicMock()
|
|
|
|
|
assistant = EnhancedAssistant(mock_base)
|
|
|
|
|
assert assistant.base == mock_base
|
|
|
|
|
assert assistant.current_conversation_id is not None
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
def test_enhanced_call_api_with_cache():
|
|
|
|
|
mock_base = MagicMock()
|
2025-11-04 08:09:12 +01:00
|
|
|
mock_base.model = "test-model"
|
|
|
|
|
mock_base.api_url = "http://test"
|
|
|
|
|
mock_base.api_key = "key"
|
2025-11-04 08:01:20 +01:00
|
|
|
mock_base.use_tools = False
|
|
|
|
|
mock_base.verbose = False
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
assistant = EnhancedAssistant(mock_base)
|
|
|
|
|
assistant.api_cache = MagicMock()
|
2025-11-04 08:09:12 +01:00
|
|
|
assistant.api_cache.get.return_value = {"cached": True}
|
|
|
|
|
|
|
|
|
|
result = assistant.enhanced_call_api([{"role": "user", "content": "test"}])
|
|
|
|
|
assert result == {"cached": True}
|
2025-11-04 08:01:20 +01:00
|
|
|
assistant.api_cache.get.assert_called_once()
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
def test_enhanced_call_api_without_cache():
|
|
|
|
|
mock_base = MagicMock()
|
2025-11-04 08:09:12 +01:00
|
|
|
mock_base.model = "test-model"
|
|
|
|
|
mock_base.api_url = "http://test"
|
|
|
|
|
mock_base.api_key = "key"
|
2025-11-04 08:01:20 +01:00
|
|
|
mock_base.use_tools = False
|
|
|
|
|
mock_base.verbose = False
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
assistant = EnhancedAssistant(mock_base)
|
|
|
|
|
assistant.api_cache = None
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
# It will try to call API and fail with network error, but that's expected
|
2025-11-04 08:09:12 +01:00
|
|
|
result = assistant.enhanced_call_api([{"role": "user", "content": "test"}])
|
|
|
|
|
assert "error" in result
|
|
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
|
|
|
|
|
def test_execute_workflow_not_found():
|
|
|
|
|
mock_base = MagicMock()
|
|
|
|
|
assistant = EnhancedAssistant(mock_base)
|
|
|
|
|
assistant.workflow_storage = MagicMock()
|
|
|
|
|
assistant.workflow_storage.load_workflow_by_name.return_value = None
|
2025-11-04 08:09:12 +01:00
|
|
|
|
|
|
|
|
result = assistant.execute_workflow("nonexistent")
|
|
|
|
|
assert "error" in result
|
|
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
|
|
|
|
|
def test_create_agent():
|
|
|
|
|
mock_base = MagicMock()
|
|
|
|
|
assistant = EnhancedAssistant(mock_base)
|
|
|
|
|
assistant.agent_manager = MagicMock()
|
2025-11-04 08:09:12 +01:00
|
|
|
assistant.agent_manager.create_agent.return_value = "agent_id"
|
|
|
|
|
|
|
|
|
|
result = assistant.create_agent("role")
|
|
|
|
|
assert result == "agent_id"
|
|
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
|
|
|
|
|
def test_search_knowledge():
|
|
|
|
|
mock_base = MagicMock()
|
|
|
|
|
assistant = EnhancedAssistant(mock_base)
|
|
|
|
|
assistant.knowledge_store = MagicMock()
|
2025-11-04 08:09:12 +01:00
|
|
|
assistant.knowledge_store.search_entries.return_value = [{"result": True}]
|
|
|
|
|
|
|
|
|
|
result = assistant.search_knowledge("query")
|
|
|
|
|
assert result == [{"result": True}]
|
|
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
|
|
|
|
|
def test_get_cache_statistics():
|
|
|
|
|
mock_base = MagicMock()
|
|
|
|
|
assistant = EnhancedAssistant(mock_base)
|
|
|
|
|
assistant.api_cache = MagicMock()
|
2025-11-05 15:34:23 +01:00
|
|
|
assistant.api_cache.get_statistics.return_value = {"total_cache_hits": 10}
|
2025-11-04 08:01:20 +01:00
|
|
|
assistant.tool_cache = MagicMock()
|
2025-11-05 15:34:23 +01:00
|
|
|
assistant.tool_cache.get_statistics.return_value = {"total_cache_hits": 5}
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
stats = assistant.get_cache_statistics()
|
2025-11-04 08:09:12 +01:00
|
|
|
assert "api_cache" in stats
|
|
|
|
|
assert "tool_cache" in stats
|
|
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
|
|
|
|
|
def test_clear_caches():
|
|
|
|
|
mock_base = MagicMock()
|
|
|
|
|
assistant = EnhancedAssistant(mock_base)
|
|
|
|
|
assistant.api_cache = MagicMock()
|
|
|
|
|
assistant.tool_cache = MagicMock()
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
assistant.clear_caches()
|
|
|
|
|
assistant.api_cache.clear_all.assert_called_once()
|
|
|
|
|
assistant.tool_cache.clear_all.assert_called_once()
|