import pytest from unittest.mock import MagicMock from pr.core.enhanced_assistant import EnhancedAssistant 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 def test_enhanced_call_api_with_cache(): mock_base = MagicMock() mock_base.model = 'test-model' mock_base.api_url = 'http://test' mock_base.api_key = 'key' mock_base.use_tools = False mock_base.verbose = False assistant = EnhancedAssistant(mock_base) assistant.api_cache = MagicMock() assistant.api_cache.get.return_value = {'cached': True} result = assistant.enhanced_call_api([{'role': 'user', 'content': 'test'}]) assert result == {'cached': True} assistant.api_cache.get.assert_called_once() def test_enhanced_call_api_without_cache(): mock_base = MagicMock() mock_base.model = 'test-model' mock_base.api_url = 'http://test' mock_base.api_key = 'key' mock_base.use_tools = False mock_base.verbose = False assistant = EnhancedAssistant(mock_base) assistant.api_cache = None # It will try to call API and fail with network error, but that's expected result = assistant.enhanced_call_api([{'role': 'user', 'content': 'test'}]) assert 'error' in result 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 result = assistant.execute_workflow('nonexistent') assert 'error' in result def test_create_agent(): mock_base = MagicMock() assistant = EnhancedAssistant(mock_base) assistant.agent_manager = MagicMock() assistant.agent_manager.create_agent.return_value = 'agent_id' result = assistant.create_agent('role') assert result == 'agent_id' def test_search_knowledge(): mock_base = MagicMock() assistant = EnhancedAssistant(mock_base) assistant.knowledge_store = MagicMock() assistant.knowledge_store.search_entries.return_value = [{'result': True}] result = assistant.search_knowledge('query') assert result == [{'result': True}] def test_get_cache_statistics(): mock_base = MagicMock() assistant = EnhancedAssistant(mock_base) assistant.api_cache = MagicMock() assistant.api_cache.get_statistics.return_value = {'hits': 10} assistant.tool_cache = MagicMock() assistant.tool_cache.get_statistics.return_value = {'misses': 5} stats = assistant.get_cache_statistics() assert 'api_cache' in stats assert 'tool_cache' in stats def test_clear_caches(): mock_base = MagicMock() assistant = EnhancedAssistant(mock_base) assistant.api_cache = MagicMock() assistant.tool_cache = MagicMock() assistant.clear_caches() assistant.api_cache.clear_all.assert_called_once() assistant.tool_cache.clear_all.assert_called_once()