From 385e6064b63b52abbeebecf473d761af74608561 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Sun, 22 Mar 2026 16:21:32 +0000 Subject: [PATCH] Add conftest.py and remaining test files --- tests/unit/test_commit_service.py | 111 ++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 tests/unit/test_commit_service.py diff --git a/tests/unit/test_commit_service.py b/tests/unit/test_commit_service.py new file mode 100644 index 0000000..8020fca --- /dev/null +++ b/tests/unit/test_commit_service.py @@ -0,0 +1,111 @@ +"""Unit tests for CommitService.""" + +import pytest +from unittest.mock import AsyncMock, MagicMock +from memory_manager.core.services import CommitService + + +@pytest.fixture +def mock_repository(): + return AsyncMock() + + +@pytest.fixture +def commit_service(mock_repository): + return CommitService(mock_repository) + + +class TestCommitService: + @pytest.mark.asyncio + async def test_create_commit(self, commit_service, mock_repository): + mock_commit = MagicMock() + mock_commit.to_dict.return_value = { + "id": 1, + "hash": "abc123", + "message": "Test commit", + "agent_id": "test-agent", + "project_path": "/test", + "snapshot": [], + "created_at": "2024-01-01T00:00:00", + } + mock_repository.get_all_entries_snapshot = AsyncMock(return_value=[]) + mock_repository.create_commit = AsyncMock(return_value=mock_commit) + + result = await commit_service.create_commit( + message="Test commit", + agent_id="test-agent", + project_path="/test", + ) + + assert result["hash"] == "abc123" + assert result["message"] == "Test commit" + mock_repository.create_commit.assert_called_once() + + @pytest.mark.asyncio + async def test_get_commit(self, commit_service, mock_repository): + mock_commit = MagicMock() + mock_commit.to_dict.return_value = {"id": 1, "hash": "abc123"} + mock_repository.get_commit = AsyncMock(return_value=mock_commit) + + result = await commit_service.get_commit("abc123") + + assert result["hash"] == "abc123" + mock_repository.get_commit.assert_called_once_with("abc123") + + @pytest.mark.asyncio + async def test_get_commit_not_found(self, commit_service, mock_repository): + mock_repository.get_commit = AsyncMock(return_value=None) + + result = await commit_service.get_commit("nonexistent") + + assert result is None + + @pytest.mark.asyncio + async def test_list_commits(self, commit_service, mock_repository): + mock_commits = [ + MagicMock(to_dict=lambda: {"id": 1, "hash": "abc123"}), + MagicMock(to_dict=lambda: {"id": 2, "hash": "def456"}), + ] + mock_repository.list_commits = AsyncMock(return_value=mock_commits) + + result = await commit_service.list_commits() + + assert len(result) == 2 + assert result[0]["hash"] == "abc123" + + @pytest.mark.asyncio + async def test_diff(self, commit_service, mock_repository): + mock_commit1 = MagicMock() + mock_commit1.to_dict.return_value = {"id": 1, "hash": "abc123"} + mock_commit1.snapshot = [{"id": 1, "title": "Entry 1"}] + + mock_commit2 = MagicMock() + mock_commit2.to_dict.return_value = {"id": 2, "hash": "def456"} + mock_commit2.snapshot = [{"id": 1, "title": "Entry 1 Updated"}, {"id": 2, "title": "Entry 2"}] + + mock_repository.get_commit = AsyncMock( + side_effect=[mock_commit1, mock_commit2] + ) + + result = await commit_service.diff("abc123", "def456") + + assert result is not None + assert len(result["modified"]) == 1 + assert len(result["added"]) == 1 + + @pytest.mark.asyncio + async def test_diff_commit_not_found(self, commit_service, mock_repository): + mock_repository.get_commit = AsyncMock(return_value=None) + + result = await commit_service.diff("nonexistent1", "nonexistent2") + + assert result is None + + def test_generate_hash(self, commit_service): + hash1 = commit_service._generate_hash("test data") + hash2 = commit_service._generate_hash("test data") + hash3 = commit_service._generate_hash("different data") + + assert hash1 == hash2 + assert hash1 != hash3 + assert len(hash1) == 40