Files
git-insights-cli/tests/test_formatters.py
7000pctAUTO 51b30c48a5
Some checks failed
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
fix: resolve CI/CD linting issues
- Remove unused imports (F401) from analyzers and test files
- Remove unused typing imports (Any, Dict, List, Optional)
- Remove unused datetime imports
- Remove unused rich.columns import
- Remove unused pytest imports in test files
2026-01-30 20:53:30 +00:00

107 lines
3.2 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
assert "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
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
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
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 "<!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 "100" in result