51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""Tests for the AdvisorComparison Pydantic models and their default wiring."""
|
|
from __future__ import annotations
|
|
|
|
from webapp.models import AdvisorComparison, AdvisorComparisonEntry, ReportData
|
|
|
|
|
|
def test_advisor_comparison_entry_accepts_all_statuses():
|
|
for status in ("resolved", "regressed", "still_triggered", "new_metric"):
|
|
entry = AdvisorComparisonEntry(
|
|
metric="faithfulness",
|
|
status=status,
|
|
previous_score=0.5,
|
|
previous_severity="warning",
|
|
current_score=0.9,
|
|
current_severity=None,
|
|
)
|
|
assert entry.status == status
|
|
|
|
|
|
def test_advisor_comparison_entry_rejects_unknown_status():
|
|
import pydantic
|
|
|
|
try:
|
|
AdvisorComparisonEntry(metric="faithfulness", status="unknown_status")
|
|
raised = False
|
|
except pydantic.ValidationError:
|
|
raised = True
|
|
assert raised
|
|
|
|
|
|
def test_advisor_comparison_defaults():
|
|
comparison = AdvisorComparison(
|
|
previous_run_id="run-1",
|
|
previous_finished_at="2026-01-01T00:00:00+00:00",
|
|
)
|
|
assert comparison.previous_judge_model == ""
|
|
assert comparison.current_judge_model == ""
|
|
assert comparison.judge_model_changed is False
|
|
assert comparison.entries == []
|
|
|
|
|
|
def test_report_data_defaults_advisor_comparison_to_none():
|
|
report = ReportData()
|
|
assert report.advisor_comparison is None
|
|
|
|
|
|
def test_report_data_accepts_advisor_comparison():
|
|
comparison = AdvisorComparison(previous_run_id="run-1", previous_finished_at="t")
|
|
report = ReportData(advisor_comparison=comparison)
|
|
assert report.advisor_comparison == comparison
|