test_crm_contract_attachment_clear.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. """合同附件:没传不动,显式空数组清空。"""
  2. from decimal import Decimal
  3. from types import SimpleNamespace
  4. from app.crud.crm.contract import _apply_contract_entity_fields
  5. _STORED = '[{"ossId":"/contract/a.pdf","category":"scan"}]'
  6. def _entity():
  7. return SimpleNamespace(
  8. attachment_files=_STORED,
  9. customer_id="",
  10. contact_id=None,
  11. owner_user_id=None,
  12. status="executing",
  13. tax_rate=None,
  14. received_amount=Decimal("0"),
  15. invoice_amount=Decimal("0"),
  16. amount=Decimal("1"),
  17. )
  18. def test_omitted_attachment_files_are_left_unchanged():
  19. entity = _entity()
  20. _apply_contract_entity_fields(entity, {"remark": "只改备注"}, db=None, tenant_no="t", is_create=False)
  21. assert entity.attachment_files == _STORED
  22. def test_explicit_empty_attachment_values_clear_the_field():
  23. for empty in ("[]", "", []):
  24. entity = _entity()
  25. _apply_contract_entity_fields(
  26. entity, {"attachmentFiles": empty}, db=None, tenant_no="t", is_create=False
  27. )
  28. assert entity.attachment_files == "[]"