Files
Aether/tests/unit/test_request_candidate_mark_skipped.py

41 lines
1.2 KiB
Python
Raw Normal View History

from __future__ import annotations
from types import SimpleNamespace
from unittest.mock import MagicMock
from src.services.request.candidate import RequestCandidateService
def test_mark_candidate_skipped_merges_extra_data_and_sets_fields() -> None:
candidate = SimpleNamespace(
status="available",
skip_reason=None,
finished_at=None,
status_code=None,
concurrent_requests=None,
extra_data={"needs_conversion": True},
)
query = MagicMock()
query.filter.return_value.first.return_value = candidate
db = MagicMock()
db.query.return_value = query
RequestCandidateService.mark_candidate_skipped(
db=db,
candidate_id="c1",
skip_reason="并发限制",
status_code=429,
concurrent_requests=12,
extra_data={"concurrency_denied": True},
)
assert candidate.status == "skipped"
assert candidate.skip_reason == "并发限制"
assert candidate.status_code == 429
assert candidate.concurrent_requests == 12
assert candidate.extra_data == {"needs_conversion": True, "concurrency_denied": True}
assert candidate.finished_at is not None
db.flush.assert_called_once()