| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- from __future__ import annotations
- import pytest
- from pydantic import ValidationError
- from app.schemas.review import (
- ReviewIssue,
- TripReviewResult,
- )
- def test_approved_review_with_warning() -> None:
- result = TripReviewResult(
- approved=True,
- summary="方案整体合理。",
- strengths=[
- "符合用户轻松旅行偏好",
- ],
- issues=[
- ReviewIssue(
- category="budget",
- severity="warning",
- message=(
- "餐饮和门票费用尚未计入。"
- ),
- )
- ],
- recommendations=[
- "出发前确认门票价格。",
- ],
- revision_feedback=[],
- )
- assert result.approved is True
- assert len(result.issues) == 1
- def test_approved_review_cannot_have_blocking_issue(
- ) -> None:
- with pytest.raises(ValidationError):
- TripReviewResult(
- approved=True,
- summary="错误的通过结果。",
- issues=[
- ReviewIssue(
- category="pace",
- severity="blocking",
- message="行程安排严重过满。",
- )
- ],
- revision_feedback=[],
- )
- def test_rejected_review_requires_feedback() -> None:
- with pytest.raises(ValidationError):
- TripReviewResult(
- approved=False,
- summary="方案需要修改。",
- issues=[
- ReviewIssue(
- category="requirement_fit",
- severity="blocking",
- message="没有满足用户需求。",
- )
- ],
- revision_feedback=[],
- )
- def test_rejected_review_with_feedback() -> None:
- result = TripReviewResult(
- approved=False,
- summary="返程日安排不合理。",
- issues=[
- ReviewIssue(
- category="flight",
- severity="blocking",
- message=(
- "返程日前往机场时间不足。"
- ),
- day_index=4,
- suggestion=(
- "取消上午景点并提前前往机场。"
- ),
- )
- ],
- revision_feedback=[
- "取消返程日上午的景点活动,"
- "至少提前3小时前往机场。",
- ],
- )
- assert result.approved is False
- assert len(result.revision_feedback) == 1
|