"""软删除待缴费(dfj)转账笔""" import unittest from types import SimpleNamespace from unittest.mock import MagicMock, patch from app.crud import protocol_sample_payment as psp class TestSoftDeletePaymentTransfer(unittest.TestCase): def test_function_exists(self): self.assertTrue(callable(getattr(psp, "soft_delete_payment_transfer", None))) def test_soft_delete_dfj_sets_del_flag_and_commits(self): t = SimpleNamespace( id="t1", pay_status="dfj", del_flag=0, update_by=None, update_time=None, ) db = MagicMock() orig = psp._get_transfer_or_raise psp._get_transfer_or_raise = lambda *a, **k: t try: with patch.object(psp, "_now", return_value="2026-10-10T12:00:00"): psp.soft_delete_payment_transfer( db, transfer_id="t1", tenant_no="zkxw", user_id="u1" ) self.assertEqual(t.del_flag, 1) self.assertEqual(t.update_by, "u1") self.assertEqual(t.update_time, "2026-10-10T12:00:00") db.add.assert_called_once_with(t) db.commit.assert_called_once() finally: psp._get_transfer_or_raise = orig def test_soft_delete_rejects_non_dfj(self): t = SimpleNamespace(id="t1", pay_status="jfqrz", del_flag=0) db = MagicMock() orig = psp._get_transfer_or_raise psp._get_transfer_or_raise = lambda *a, **k: t try: with self.assertRaises(ValueError) as ctx: psp.soft_delete_payment_transfer( db, transfer_id="t1", tenant_no="zkxw", user_id="u1" ) self.assertIn("删除", str(ctx.exception)) db.commit.assert_not_called() finally: psp._get_transfer_or_raise = orig if __name__ == "__main__": unittest.main()