95 lines
3.4 KiB
Python
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
|