"""运输计划司机/现场公共链接:归档后应标记并拦截写操作。""" 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