Files
shell-speak/tests/unit/test_json_formatter.py
Auto User 95459fb4c8 fix: resolve CI test failure in output.py
- Fixed undefined 'tool' variable in display_history function
- Changed '[tool]' markup tag usage to proper Rich syntax
- All tests now pass (38/38 unit tests)
- Type checking passes with mypy --strict
2026-01-31 06:22:27 +00:00

78 lines
2.7 KiB
Python

from codesnap.output.json_formatter import JSONFormatter
class TestJSONFormatter:
def setup_method(self) -> None:
self.formatter = JSONFormatter()
def test_format_valid_result(self) -> None:
result = {
"files": [
{
"file": "test.py",
"language": "python",
"lines": 50,
"functions": [{"name": "test_func", "start_line": 1, "end_line": 10}],
"classes": [],
"complexity": {"score": 5, "rating": "low"}
}
],
"dependency_graph": {
"total_dependencies": 0,
"orphaned_files": 0,
"cycles_detected": 0,
"cycle_details": [],
"orphaned_details": [],
"edges": [],
"statistics": {}
}
}
output = self.formatter.format(result)
import json
parsed = json.loads(output)
assert "schema_version" in parsed
assert "summary" in parsed
assert "files" in parsed
assert parsed["summary"]["total_files"] == 1
def test_format_empty_result(self) -> None:
result = {
"files": [],
"dependency_graph": {
"total_dependencies": 0,
"orphaned_files": 0,
"cycles_detected": 0,
"cycle_details": [],
"orphaned_details": [],
"edges": [],
"statistics": {}
}
}
output = self.formatter.format(result)
import json
parsed = json.loads(output)
assert parsed["summary"]["total_files"] == 0
def test_summary_includes_language_counts(self) -> None:
result = {
"files": [
{"file": "a.py", "language": "python", "lines": 10, "functions": [], "classes": [], "complexity": {}},
{"file": "b.js", "language": "javascript", "lines": 20, "functions": [], "classes": [], "complexity": {}},
{"file": "c.py", "language": "python", "lines": 30, "functions": [], "classes": [], "complexity": {}}
],
"dependency_graph": {
"total_dependencies": 0,
"orphaned_files": 0,
"cycles_detected": 0,
"cycle_details": [],
"orphaned_details": [],
"edges": [],
"statistics": {}
}
}
output = self.formatter.format(result)
import json
parsed = json.loads(output)
assert parsed["summary"]["languages"]["python"] == 2
assert parsed["summary"]["languages"]["javascript"] == 1