61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
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
|
|
|
|
|
|
class TestJSONFormatter:
|
|
"""Test JSON formatter."""
|
|
|
|
def test_format_dict(self):
|
|
"""Test formatting a dictionary."""
|
|
data = {"key": "value", "number": 42}
|
|
result = JSONFormatter.format(data)
|
|
assert "value" 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
|
|
|
|
|
|
class TestMarkdownFormatter:
|
|
"""Test Markdown formatter."""
|
|
|
|
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)
|
|
assert "# Git Insights Report" in result
|
|
|
|
|
|
class TestHTMLFormatter:
|
|
"""Test HTML formatter."""
|
|
|
|
def test_format_basic(self):
|
|
"""Test basic HTML formatting."""
|
|
class MockData:
|
|
commit_analysis = None
|
|
|
|
data = MockData()
|
|
result = HTMLFormatter.format(data)
|
|
assert "<!DOCTYPE html>" in result
|
|
assert "Git Insights Report" in result
|