test_sample_payment_period_summary.py 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. """单期展示摘要:已缴合计、首笔日期、欠缴、方式、财务审核码"""
  2. from decimal import Decimal
  3. import unittest
  4. from app.services.sample_payment_period_summary import summarize_period
  5. class TestPeriodSummary(unittest.TestCase):
  6. def test_empty_transfers(self):
  7. r = summarize_period(
  8. due_amount=Decimal("1000"),
  9. transfers=[],
  10. )
  11. self.assertEqual(r["displayPaidAmount"], Decimal("0"))
  12. self.assertEqual(r["arrearsAmount"], Decimal("1000"))
  13. self.assertEqual(r["payDate"], "")
  14. self.assertEqual(r["payTypeSummary"], "")
  15. self.assertEqual(r["financeAudit"], "dfj")
  16. def test_dfj_does_not_count_as_display_paid(self):
  17. r = summarize_period(
  18. due_amount=Decimal("1000"),
  19. transfers=[
  20. {
  21. "transferAmount": Decimal("400"),
  22. "transferType": "wxzz",
  23. "transferTime": "2026-04-19 10:00:00",
  24. "payStatus": "dfj",
  25. }
  26. ],
  27. )
  28. self.assertEqual(r["displayPaidAmount"], Decimal("0"))
  29. self.assertEqual(r["arrearsAmount"], Decimal("1000"))
  30. self.assertEqual(r["payDate"], "2026-04-19")
  31. def test_multi_transfer_summary(self):
  32. r = summarize_period(
  33. due_amount=Decimal("5000"),
  34. transfers=[
  35. {
  36. "transferAmount": Decimal("3000"),
  37. "transferType": "wxzz",
  38. "transferTime": "2026-04-19 10:11:00",
  39. "payStatus": "yjf",
  40. },
  41. {
  42. "transferAmount": Decimal("2000"),
  43. "transferType": "yhkzz",
  44. "transferTime": "2026-04-20 09:40:00",
  45. "payStatus": "yjf",
  46. },
  47. ],
  48. )
  49. self.assertEqual(r["displayPaidAmount"], Decimal("5000"))
  50. self.assertEqual(r["payDate"], "2026-04-19")
  51. self.assertEqual(r["arrearsAmount"], Decimal("0"))
  52. self.assertEqual(r["payTypeSummary"], "多笔")
  53. self.assertEqual(r["financeAudit"], "yjf")
  54. def test_pay_date_is_first_transfer_not_latest(self):
  55. r = summarize_period(
  56. due_amount=Decimal("5000"),
  57. transfers=[
  58. {
  59. "transferAmount": Decimal("3000"),
  60. "transferType": "wxzz",
  61. "transferTime": "2026-04-19 10:11:00",
  62. "payStatus": "yjf",
  63. },
  64. {
  65. "transferAmount": Decimal("2000"),
  66. "transferType": "yhkzz",
  67. "transferTime": "2026-04-20 09:40:00",
  68. "payStatus": "yjf",
  69. },
  70. ],
  71. )
  72. self.assertEqual(r["payDate"], "2026-04-19")
  73. def test_confirming_wins(self):
  74. r = summarize_period(
  75. due_amount=Decimal("4960"),
  76. transfers=[
  77. {
  78. "transferAmount": Decimal("2000"),
  79. "transferType": "pos",
  80. "transferTime": "2026-06-18 15:20:00",
  81. "payStatus": "jfqrz",
  82. }
  83. ],
  84. )
  85. self.assertEqual(r["displayPaidAmount"], Decimal("0"))
  86. self.assertEqual(r["financeAudit"], "jfqrz")