55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
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
|