Files
shanxia2.0/backend/tests/test_pl_plan_cancel_archive_status.py
T

40 lines
1.6 KiB
Python

from types import SimpleNamespace
from unittest.mock import MagicMock, patch
import pytest
from app.api.pl.plan import cancel_plan, _filters_from_params
from app.services.pl_plan_archive_export import ARCHIVE_STATUS_LABELS
@pytest.mark.parametrize("archive_status", ["unarchived", "draft"])
def test_cancel_plan_persists_cancelled_archive_status(archive_status):
plan = SimpleNamespace(
id="p1", follow_status="arranged", archive_status=archive_status,
transport_status="arranged", transport_id=None,
)
db = MagicMock()
user = MagicMock(id="u1")
with patch("app.api.pl.plan.get_tenant_no", return_value="t1"), patch(
"app.api.pl.plan._get_plan", return_value=plan
), patch(
"app.api.pl.plan.plan_execution_lock_reason", return_value=None
), patch("app.api.pl.plan.void_io_orders_for_plan"), patch("app.api.pl.plan.apply_plan_quota") as quota:
result = cancel_plan.__wrapped__("p1", body=None, db=db, user=user)
assert result.follow_status == "cancelled"
assert result.archive_status == "cancelled"
quota.assert_called_once_with(db, user, plan, "release", None)
db.flush.assert_called_once()
db.commit.assert_not_called()
db.refresh.assert_called_once_with(plan)
def test_cancelled_archive_status_export_label():
assert ARCHIVE_STATUS_LABELS.get("cancelled") == "已取消"
def test_archive_list_scope_passes_through_list_and_export_params():
with patch("app.api.pl.plan.build_plan_column_filters", return_value=[]) as build:
_filters_from_params({"archiveList": "1"}, db=None, tenant_no="t1")
assert build.call_args.kwargs["archive_list"] is True