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