Add conftest.py and remaining test files
This commit is contained in:
67
tests/unit/test_search.py
Normal file
67
tests/unit/test_search.py
Normal file
@@ -0,0 +1,67 @@
|
||||
"""Unit tests for SearchService."""
|
||||
|
||||
import pytest
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
from memory_manager.core.services import SearchService
|
||||
from memory_manager.db.models import MemoryCategory
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_repository():
|
||||
return AsyncMock()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def search_service(mock_repository):
|
||||
return SearchService(mock_repository)
|
||||
|
||||
|
||||
class TestSearchService:
|
||||
@pytest.mark.asyncio
|
||||
async def test_search_basic(self, search_service, mock_repository):
|
||||
mock_entries = [
|
||||
MagicMock(to_dict=lambda: {"id": 1, "title": "Test Entry", "content": "Test content"}),
|
||||
]
|
||||
mock_repository.search_entries = AsyncMock(return_value=mock_entries)
|
||||
|
||||
result = await search_service.search(query="test")
|
||||
|
||||
assert len(result) == 1
|
||||
assert result[0]["title"] == "Test Entry"
|
||||
mock_repository.search_entries.assert_called_once()
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_search_with_category(self, search_service, mock_repository):
|
||||
mock_repository.search_entries = AsyncMock(return_value=[])
|
||||
|
||||
await search_service.search(
|
||||
query="test",
|
||||
category=MemoryCategory.DECISION,
|
||||
)
|
||||
|
||||
call_args = mock_repository.search_entries.call_args
|
||||
assert call_args.kwargs["category"] == MemoryCategory.DECISION
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_search_with_filters(self, search_service, mock_repository):
|
||||
mock_repository.search_entries = AsyncMock(return_value=[])
|
||||
|
||||
await search_service.search(
|
||||
query="test",
|
||||
agent_id="test-agent",
|
||||
project_path="/test",
|
||||
limit=50,
|
||||
)
|
||||
|
||||
call_args = mock_repository.search_entries.call_args
|
||||
assert call_args.kwargs["agent_id"] == "test-agent"
|
||||
assert call_args.kwargs["project_path"] == "/test"
|
||||
assert call_args.kwargs["limit"] == 50
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_search_empty_results(self, search_service, mock_repository):
|
||||
mock_repository.search_entries = AsyncMock(return_value=[])
|
||||
|
||||
result = await search_service.search(query="nonexistent")
|
||||
|
||||
assert len(result) == 0
|
||||
Reference in New Issue
Block a user