import pytest from datetime import datetime from unittest.mock import MagicMock, patch @pytest.fixture def mock_commit(): """Create a mock commit object.""" commit = MagicMock() commit.sha = "abc123" commit.message = "Test commit" commit.author_name = "John Doe" commit.author_email = "john@test.com" commit.committed_datetime = datetime(2024, 1, 15, 10, 30, 0) commit.author_datetime = datetime(2024, 1, 15, 10, 30, 0) commit.additions = 50 commit.deletions = 10 commit.files_changed = ["src/main.py", "tests/test.py"] commit.parents = [] commit.is_merge = False commit.is_revert = False commit.lines_changed_count = 60 return commit @pytest.fixture def mock_repo(): """Create a mock git repository.""" repo = MagicMock() return repo @pytest.fixture def sample_commits(): """Create a list of sample commits.""" commits = [] for i in range(10): commit = MagicMock() commit.sha = f"sha{i}" commit.message = f"Commit {i}" commit.author_name = "John Doe" commit.author_email = "john@test.com" commit.committed_datetime = datetime(2024, 1, i + 1, 10, 0, 0) commit.author_datetime = datetime(2024, 1, i + 1, 10, 0, 0) commit.additions = 10 * i commit.deletions = 5 * i commit.files_changed = [f"src/file{i}.py"] commit.parents = [] commit.is_merge = False commit.is_revert = False commit.lines_changed_count = 15 * i commits.append(commit) return commits