import pytest from datetime import datetime from unittest.mock import MagicMock class TestJSONFormatter: """Test JSON formatter.""" def test_format_dict(self): """Test formatting dictionary data.""" from src.formatters import JSONFormatter data = {"key": "value", "number": 42} result = JSONFormatter.format(data) assert '"key": "value"' in result assert '"number": 42' in result def test_format_empty(self): """Test formatting empty data.""" from src.formatters import JSONFormatter result = JSONFormatter.format({}) assert result == "{}" class TestMarkdownFormatter: """Test Markdown formatter.""" def test_format_basic(self): """Test basic Markdown formatting.""" from src.formatters import MarkdownFormatter result = MarkdownFormatter.format(MagicMock()) assert "# Git Insights Report" in result def test_format_with_analysis(self): """Test formatting with analysis data.""" from src.formatters import MarkdownFormatter from src.models import CommitAnalysis, Author mock_analysis = MagicMock() mock_analysis.commit_analysis = CommitAnalysis( total_commits=100, unique_authors=5, commits_by_hour={}, commits_by_day={}, commits_by_week={}, commits_by_month={}, top_authors=[Author("John", "john@test.com", 50, 1000, 500)], average_commits_per_day=3.3, ) mock_analysis.velocity_analysis = None mock_analysis.code_churn_analysis = None result = MarkdownFormatter.format(mock_analysis) assert "Total Commits" in result assert "100" in result