test_pl_plan_cancel_archive_status.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from types import SimpleNamespace
  2. from unittest.mock import MagicMock, patch
  3. import pytest
  4. from app.api.pl.plan import cancel_plan, _filters_from_params
  5. from app.services.pl_plan_archive_export import ARCHIVE_STATUS_LABELS
  6. @pytest.mark.parametrize("archive_status", ["unarchived", "draft"])
  7. def test_cancel_plan_persists_cancelled_archive_status(archive_status):
  8. plan = SimpleNamespace(
  9. id="p1", follow_status="arranged", archive_status=archive_status,
  10. transport_status="arranged", transport_id=None,
  11. )
  12. db = MagicMock()
  13. user = MagicMock(id="u1")
  14. with patch("app.api.pl.plan.get_tenant_no", return_value="t1"), patch(
  15. "app.api.pl.plan._get_plan", return_value=plan
  16. ), patch(
  17. "app.api.pl.plan.plan_execution_lock_reason", return_value=None
  18. ), patch("app.api.pl.plan.void_io_orders_for_plan"):
  19. result = cancel_plan("p1", body=None, db=db, user=user)
  20. assert result.follow_status == "cancelled"
  21. assert result.archive_status == "cancelled"
  22. db.commit.assert_called_once()
  23. db.refresh.assert_called_once_with(plan)
  24. def test_cancelled_archive_status_export_label():
  25. assert ARCHIVE_STATUS_LABELS.get("cancelled") == "已取消"
  26. def test_archive_list_scope_passes_through_list_and_export_params():
  27. with patch("app.api.pl.plan.build_plan_column_filters", return_value=[]) as build:
  28. _filters_from_params({"archiveList": "1"}, db=None, tenant_no="t1")
  29. assert build.call_args.kwargs["archive_list"] is True