test_protocol_sample_payment.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """按样本缴费:转账状态机与批次已缴/欠缴计算"""
  2. from decimal import Decimal
  3. import unittest
  4. from app.services.protocol_transfer_status import (
  5. can_confirm_receipt,
  6. can_submit_receipt,
  7. schedule_paid_and_arrears,
  8. )
  9. class TestTransferStatusRules(unittest.TestCase):
  10. def test_submit_only_dfj(self):
  11. self.assertTrue(can_submit_receipt("dfj"))
  12. self.assertFalse(can_submit_receipt("jfqrz"))
  13. self.assertFalse(can_submit_receipt("yjf"))
  14. self.assertFalse(can_submit_receipt(""))
  15. self.assertFalse(can_submit_receipt(None))
  16. def test_confirm_only_jfqrz(self):
  17. self.assertTrue(can_confirm_receipt("jfqrz"))
  18. self.assertFalse(can_confirm_receipt("dfj"))
  19. self.assertFalse(can_confirm_receipt("yjf"))
  20. def test_schedule_arrears(self):
  21. paid, arrears = schedule_paid_and_arrears(
  22. due=Decimal("1000"),
  23. confirmed_transfers=[Decimal("300"), Decimal("200")],
  24. )
  25. self.assertEqual(paid, Decimal("500"))
  26. self.assertEqual(arrears, Decimal("500"))
  27. def test_schedule_arrears_overpay(self):
  28. paid, arrears = schedule_paid_and_arrears(
  29. due=Decimal("100"),
  30. confirmed_transfers=[Decimal("60"), Decimal("50")],
  31. )
  32. self.assertEqual(paid, Decimal("110"))
  33. self.assertEqual(arrears, Decimal("-10"))
  34. if __name__ == "__main__":
  35. unittest.main()