44 lines
1.2 KiB
Python
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
|