This commit is contained in:
@@ -1,34 +1,24 @@
|
|||||||
import json
|
import pytest
|
||||||
from src.formatters.json_formatter import JSONFormatter
|
from datetime import datetime
|
||||||
from src.formatters.markdown_formatter import MarkdownFormatter
|
from unittest.mock import MagicMock
|
||||||
from src.formatters.html_formatter import HTMLFormatter
|
|
||||||
from src.models.data_structures import CommitAnalysis
|
|
||||||
|
|
||||||
|
|
||||||
class TestJSONFormatter:
|
class TestJSONFormatter:
|
||||||
"""Test JSON formatter."""
|
"""Test JSON formatter."""
|
||||||
|
|
||||||
def test_format_dict(self):
|
def test_format_dict(self):
|
||||||
"""Test formatting a dictionary."""
|
"""Test formatting dictionary data."""
|
||||||
|
from src.formatters import JSONFormatter
|
||||||
data = {"key": "value", "number": 42}
|
data = {"key": "value", "number": 42}
|
||||||
result = JSONFormatter.format(data)
|
result = JSONFormatter.format(data)
|
||||||
assert "value" in result
|
assert '"key": "value"' in result
|
||||||
assert "42" in result
|
assert '"number": 42' in result
|
||||||
|
|
||||||
def test_format_analysis(self):
|
def test_format_empty(self):
|
||||||
"""Test formatting an analysis object."""
|
"""Test formatting empty data."""
|
||||||
analysis = CommitAnalysis(
|
from src.formatters import JSONFormatter
|
||||||
total_commits=100,
|
result = JSONFormatter.format({})
|
||||||
unique_authors=5,
|
assert result == "{}"
|
||||||
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:
|
class TestMarkdownFormatter:
|
||||||
@@ -36,71 +26,29 @@ class TestMarkdownFormatter:
|
|||||||
|
|
||||||
def test_format_basic(self):
|
def test_format_basic(self):
|
||||||
"""Test basic Markdown formatting."""
|
"""Test basic Markdown formatting."""
|
||||||
class MockData:
|
from src.formatters import MarkdownFormatter
|
||||||
commit_analysis = None
|
result = MarkdownFormatter.format(MagicMock())
|
||||||
velocity_analysis = None
|
|
||||||
code_churn_analysis = None
|
|
||||||
risky_commit_analysis = None
|
|
||||||
|
|
||||||
data = MockData()
|
|
||||||
result = MarkdownFormatter.format(data)
|
|
||||||
assert "# Git Insights Report" in result
|
assert "# Git Insights Report" in result
|
||||||
|
|
||||||
def test_format_with_commit_analysis(self):
|
def test_format_with_analysis(self):
|
||||||
"""Test formatting with commit analysis."""
|
"""Test formatting with analysis data."""
|
||||||
class MockData:
|
from src.formatters import MarkdownFormatter
|
||||||
commit_analysis = CommitAnalysis(
|
from src.models import CommitAnalysis, Author
|
||||||
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()
|
mock_analysis = MagicMock()
|
||||||
result = MarkdownFormatter.format(data)
|
mock_analysis.commit_analysis = CommitAnalysis(
|
||||||
assert "Total Commits" in result
|
total_commits=100,
|
||||||
assert "100" in result
|
unique_authors=5,
|
||||||
|
commits_by_hour={},
|
||||||
|
commits_by_day={},
|
||||||
class TestHTMLFormatter:
|
commits_by_week={},
|
||||||
"""Test HTML formatter."""
|
commits_by_month={},
|
||||||
|
top_authors=[Author("John", "john@test.com", 50, 1000, 500)],
|
||||||
def test_format_basic(self):
|
average_commits_per_day=3.3,
|
||||||
"""Test basic HTML formatting."""
|
)
|
||||||
class MockData:
|
mock_analysis.velocity_analysis = None
|
||||||
commit_analysis = None
|
mock_analysis.code_churn_analysis = None
|
||||||
velocity_analysis = None
|
|
||||||
code_churn_analysis = None
|
result = MarkdownFormatter.format(mock_analysis)
|
||||||
risky_commit_analysis = None
|
|
||||||
|
|
||||||
data = MockData()
|
|
||||||
result = HTMLFormatter.format(data)
|
|
||||||
assert "<!DOCTYPE html>" 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)
|
|
||||||
assert "Total Commits" in result
|
assert "Total Commits" in result
|
||||||
assert "100" in result
|
assert "100" in result
|
||||||
|
|||||||
Reference in New Issue
Block a user