Add HTML template and unit tests
This commit is contained in:
114
tests/unit/test_patterns.py
Normal file
114
tests/unit/test_patterns.py
Normal file
@@ -0,0 +1,114 @@
|
||||
"""Unit tests for patterns."""
|
||||
|
||||
import pytest
|
||||
from vibeguard.patterns.definitions import Severity, Pattern, Issue
|
||||
from vibeguard.patterns.manager import PatternManager
|
||||
|
||||
|
||||
class TestPatternDefinitions:
|
||||
"""Tests for pattern definitions."""
|
||||
|
||||
def test_severity_order(self):
|
||||
"""Test severity ordering."""
|
||||
assert Severity.CRITICAL.value == "critical"
|
||||
assert Severity.ERROR.value == "error"
|
||||
assert Severity.WARNING.value == "warning"
|
||||
assert Severity.INFO.value == "info"
|
||||
|
||||
def test_pattern_creation(self):
|
||||
"""Test pattern creation."""
|
||||
pattern = Pattern(
|
||||
id="TEST001",
|
||||
name="Test Pattern",
|
||||
description="A test pattern",
|
||||
severity=Severity.WARNING,
|
||||
languages=["python"],
|
||||
message="Test message",
|
||||
suggestion="Test suggestion",
|
||||
)
|
||||
|
||||
assert pattern.id == "TEST001"
|
||||
assert pattern.name == "Test Pattern"
|
||||
assert pattern.severity == Severity.WARNING
|
||||
assert "python" in pattern.languages
|
||||
|
||||
def test_issue_to_dict(self):
|
||||
"""Test issue to dictionary conversion."""
|
||||
issue = Issue(
|
||||
pattern_id="TEST001",
|
||||
file="test.py",
|
||||
line=10,
|
||||
severity=Severity.WARNING,
|
||||
message="Test message",
|
||||
suggestion="Test suggestion",
|
||||
)
|
||||
|
||||
result = issue.to_dict()
|
||||
|
||||
assert result["pattern"] == "TEST001"
|
||||
assert result["file"] == "test.py"
|
||||
assert result["line"] == 10
|
||||
assert result["severity"] == "warning"
|
||||
|
||||
|
||||
class TestPatternManager:
|
||||
"""Tests for pattern manager."""
|
||||
|
||||
def test_load_patterns(self):
|
||||
"""Test loading all patterns."""
|
||||
manager = PatternManager()
|
||||
manager.load_all_patterns()
|
||||
|
||||
assert len(manager.patterns) > 0
|
||||
|
||||
def test_get_pattern(self):
|
||||
"""Test getting a pattern by ID."""
|
||||
manager = PatternManager()
|
||||
manager.load_all_patterns()
|
||||
|
||||
pattern = manager.get_pattern("PY001")
|
||||
assert pattern is not None
|
||||
assert pattern.id == "PY001"
|
||||
|
||||
def test_get_patterns_by_language(self):
|
||||
"""Test getting patterns for a specific language."""
|
||||
manager = PatternManager()
|
||||
manager.load_all_patterns()
|
||||
|
||||
python_patterns = manager.get_patterns_by_language("python")
|
||||
assert len(python_patterns) > 0
|
||||
|
||||
for pattern in python_patterns:
|
||||
assert "python" in pattern.languages or "all" in pattern.languages
|
||||
|
||||
def test_get_patterns_by_severity(self):
|
||||
"""Test getting patterns by severity."""
|
||||
manager = PatternManager()
|
||||
manager.load_all_patterns()
|
||||
|
||||
error_patterns = manager.get_patterns_by_severity(Severity.ERROR)
|
||||
for pattern in error_patterns:
|
||||
assert pattern.severity == Severity.ERROR
|
||||
|
||||
def test_to_dict(self):
|
||||
"""Test converting patterns to dictionary."""
|
||||
manager = PatternManager()
|
||||
manager.load_all_patterns()
|
||||
|
||||
result = manager.to_dict()
|
||||
|
||||
assert isinstance(result, dict)
|
||||
assert len(result) > 0
|
||||
for pattern_id, pattern_data in result.items():
|
||||
assert "id" in pattern_data
|
||||
assert "name" in pattern_data
|
||||
assert "severity" in pattern_data
|
||||
|
||||
def test_pattern_categories(self):
|
||||
"""Test that patterns have proper categories."""
|
||||
manager = PatternManager()
|
||||
manager.load_all_patterns()
|
||||
|
||||
for pattern in manager.patterns.values():
|
||||
assert pattern.category is not None
|
||||
assert len(pattern.category) > 0
|
||||
Reference in New Issue
Block a user