57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
"""Tests for confidence scoring."""
|
|
|
|
import pytest
|
|
|
|
from src.reporting.confidence import ConfidenceScorer
|
|
from src.core.models import Issue, IssueCategory, ScanResult, SeverityLevel
|
|
|
|
|
|
class TestConfidenceScorer:
|
|
"""Tests for ConfidenceScorer class."""
|
|
|
|
def test_scorer_initialization(self):
|
|
"""Test scorer creates instance."""
|
|
scorer = ConfidenceScorer()
|
|
assert scorer is not None
|
|
|
|
def test_calculate_perfect_score(self):
|
|
"""Test 100 score for no issues."""
|
|
scorer = ConfidenceScorer()
|
|
result = ScanResult(issues=[], files_scanned=5)
|
|
score = scorer.calculate(result)
|
|
assert score == 100
|
|
|
|
def test_calculate_with_issues(self):
|
|
"""Test score calculation with issues."""
|
|
scorer = ConfidenceScorer()
|
|
issues = [
|
|
Issue(
|
|
category=IssueCategory.SECURITY,
|
|
severity=SeverityLevel.HIGH,
|
|
file_path="test.py",
|
|
line_number=1,
|
|
message="Test issue",
|
|
)
|
|
]
|
|
result = ScanResult(issues=issues, files_scanned=1)
|
|
score = scorer.calculate(result)
|
|
assert score < 100
|
|
assert score >= 0
|
|
|
|
def test_score_not_negative(self):
|
|
"""Test score doesn't go below 0."""
|
|
scorer = ConfidenceScorer()
|
|
issues = [
|
|
Issue(
|
|
category=IssueCategory.SECURITY,
|
|
severity=SeverityLevel.CRITICAL,
|
|
file_path="test.py",
|
|
line_number=1,
|
|
message="Test issue",
|
|
)
|
|
for _ in range(10)
|
|
]
|
|
result = ScanResult(issues=issues, files_scanned=1)
|
|
score = scorer.calculate(result)
|
|
assert score >= 0
|