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