Files
shanxia2.0/backend/tests/test_pl_plan_stop_upsert.py
2026-09-05 18:18:06 +08:00

44 lines
1.2 KiB
Python

"""replace_plan_stops 应按 payload.id upsert 送货段,而非每次换新 UUID。"""
from unittest.mock import MagicMock
import pytest
from fastapi import HTTPException
from app.services.pl_plan_stop_service import resolve_delivery_id_for_upsert
def test_upsert_delivery_rejects_foreign_plan_id():
with pytest.raises(HTTPException) as ei:
resolve_delivery_id_for_upsert(
plan_id="plan-1",
payload_id="del-other-plan",
existing_by_id={},
)
assert ei.value.status_code == 422
def test_upsert_delivery_keeps_payload_id():
existing = MagicMock()
existing.id = "del-keep"
existing.plan_id = "plan-1"
new_id, row = resolve_delivery_id_for_upsert(
plan_id="plan-1",
payload_id="del-keep",
existing_by_id={"del-keep": existing},
)
assert new_id == "del-keep"
assert row is existing
def test_upsert_delivery_generates_id_when_missing(monkeypatch):
from app.services import pl_plan_stop_service as svc
monkeypatch.setattr(svc, "generate_uuid", lambda: "new-del")
new_id, row = resolve_delivery_id_for_upsert(
plan_id="plan-1",
payload_id=None,
existing_by_id={},
)
assert new_id == "new-del"
assert row is None