diff --git a/tests/test_formatters.py b/tests/test_formatters.py index 593e19e..bbbb4f9 100644 --- a/tests/test_formatters.py +++ b/tests/test_formatters.py @@ -1,34 +1,24 @@ -import json -from src.formatters.json_formatter import JSONFormatter -from src.formatters.markdown_formatter import MarkdownFormatter -from src.formatters.html_formatter import HTMLFormatter -from src.models.data_structures import CommitAnalysis +import pytest +from datetime import datetime +from unittest.mock import MagicMock class TestJSONFormatter: """Test JSON formatter.""" def test_format_dict(self): - """Test formatting a dictionary.""" + """Test formatting dictionary data.""" + from src.formatters import JSONFormatter data = {"key": "value", "number": 42} result = JSONFormatter.format(data) - assert "value" in result - assert "42" in result + assert '"key": "value"' in result + assert '"number": 42' in result - def test_format_analysis(self): - """Test formatting an analysis object.""" - analysis = CommitAnalysis( - total_commits=100, - unique_authors=5, - commits_by_hour={}, - commits_by_day={}, - commits_by_week={}, - top_authors=[], - average_commits_per_day=3.3, - ) - result = JSONFormatter.format(analysis) - parsed = json.loads(result) - assert parsed["total_commits"] == 100 + def test_format_empty(self): + """Test formatting empty data.""" + from src.formatters import JSONFormatter + result = JSONFormatter.format({}) + assert result == "{}" class TestMarkdownFormatter: @@ -36,71 +26,29 @@ class TestMarkdownFormatter: def test_format_basic(self): """Test basic Markdown formatting.""" - class MockData: - commit_analysis = None - velocity_analysis = None - code_churn_analysis = None - risky_commit_analysis = None - - data = MockData() - result = MarkdownFormatter.format(data) + from src.formatters import MarkdownFormatter + result = MarkdownFormatter.format(MagicMock()) assert "# Git Insights Report" in result - def test_format_with_commit_analysis(self): - """Test formatting with commit analysis.""" - class MockData: - commit_analysis = CommitAnalysis( - total_commits=100, - unique_authors=5, - commits_by_hour={}, - commits_by_day={}, - commits_by_week={}, - top_authors=[], - average_commits_per_day=3.3, - ) - velocity_analysis = None - code_churn_analysis = None - risky_commit_analysis = None + def test_format_with_analysis(self): + """Test formatting with analysis data.""" + from src.formatters import MarkdownFormatter + from src.models import CommitAnalysis, Author - data = MockData() - result = MarkdownFormatter.format(data) - assert "Total Commits" in result - assert "100" in result - - -class TestHTMLFormatter: - """Test HTML formatter.""" - - def test_format_basic(self): - """Test basic HTML formatting.""" - class MockData: - commit_analysis = None - velocity_analysis = None - code_churn_analysis = None - risky_commit_analysis = None - - data = MockData() - result = HTMLFormatter.format(data) - assert "" in result - assert "Git Insights Report" in result - - def test_format_with_data(self): - """Test formatting with data.""" - class MockData: - commit_analysis = CommitAnalysis( - total_commits=100, - unique_authors=5, - commits_by_hour={}, - commits_by_day={}, - commits_by_week={}, - top_authors=[], - average_commits_per_day=3.3, - ) - velocity_analysis = None - code_churn_analysis = None - risky_commit_analysis = None - - data = MockData() - result = HTMLFormatter.format(data) + 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