Files
shanxia2.0/backend/tests/test_pl_public_link_archived.py
2026-08-06 09:58:20 +08:00

95 lines
3.4 KiB
Python

"""运输计划司机/现场公共链接:归档后应标记并拦截写操作。"""
from types import SimpleNamespace
from app.api.pl.public_io_order import _resolve_io_order_link_flags
from app.api.pl.public_site import _resolve_site_link_flags
from app.api.pl.public_transport import _resolve_driver_link_flags
from app.schemas.pl.transport import PublicTransportPageRead, PublicTransportSitePageRead
def test_driver_link_flags_archived_when_plan_archived():
plan = SimpleNamespace(follow_status="completed", archive_status="archived")
transport = SimpleNamespace(transport_status="arranged")
voided, archived = _resolve_driver_link_flags(plan, transport)
assert voided is False
assert archived is True
def test_driver_link_flags_voided_takes_precedence_shape():
plan = SimpleNamespace(follow_status="cancelled", archive_status="unarchived")
transport = SimpleNamespace(transport_status="arranged")
voided, archived = _resolve_driver_link_flags(plan, transport)
assert voided is True
assert archived is False
def test_driver_link_flags_voided_by_transport_cancelled():
plan = SimpleNamespace(follow_status="arranged", archive_status="unarchived")
transport = SimpleNamespace(transport_status="cancelled")
voided, archived = _resolve_driver_link_flags(plan, transport)
assert voided is True
assert archived is False
def test_site_link_flags_archived_when_plan_archived():
plan = SimpleNamespace(follow_status="completed", archive_status="archived")
voided, archived = _resolve_site_link_flags(plan)
assert voided is False
assert archived is True
def test_site_link_flags_voided_when_cancelled():
plan = SimpleNamespace(follow_status="cancelled", archive_status="unarchived")
voided, archived = _resolve_site_link_flags(plan)
assert voided is True
assert archived is False
def test_site_link_flags_false_when_no_plan():
voided, archived = _resolve_site_link_flags(None)
assert voided is False
assert archived is False
def test_public_transport_page_schema_exposes_plan_archived():
page = PublicTransportPageRead(
planNo="P1",
planType="sale",
planArchived=True,
)
dumped = page.model_dump(by_alias=True)
assert dumped["planArchived"] is True
def test_public_site_page_schema_exposes_archived():
page = PublicTransportSitePageRead(
businessType="入库",
partnerCompany="A",
vehicleNo="浙A",
archived=True,
)
dumped = page.model_dump(by_alias=True)
assert dumped["archived"] is True
def test_io_order_link_flags_archived_when_plan_archived():
plan = SimpleNamespace(follow_status="completed", archive_status="archived")
header = SimpleNamespace(status="completed")
voided, archived = _resolve_io_order_link_flags(plan, header)
assert voided is False
assert archived is True
def test_io_order_link_flags_voided_by_header_or_plan():
plan = SimpleNamespace(follow_status="cancelled", archive_status="unarchived")
header = SimpleNamespace(status="in_progress")
voided, archived = _resolve_io_order_link_flags(plan, header)
assert voided is True
assert archived is False
plan2 = SimpleNamespace(follow_status="arranged", archive_status="unarchived")
header2 = SimpleNamespace(status="voided")
voided2, archived2 = _resolve_io_order_link_flags(plan2, header2)
assert voided2 is True
assert archived2 is False