Files
vibeguard/tests/unit/test_patterns.py
7000pctAUTO 90353f1665
Some checks failed
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
Add HTML template and unit tests
2026-02-03 07:02:13 +00:00

115 lines
3.5 KiB
Python

"""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