test_protocol_payment_summary_transfer_time.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """payment summary detail includes transferTime"""
  2. from datetime import datetime
  3. from types import SimpleNamespace
  4. import unittest
  5. from app.services.qc_work_order_fee_summary import (
  6. build_protocol_payment_summary,
  7. pick_earliest_transfer_time_by_protocol,
  8. )
  9. class TestPaymentSummaryTransferTime(unittest.TestCase):
  10. def test_detail_includes_transfer_time(self):
  11. pay = SimpleNamespace(pay_mode="fq", contract_amount=10000)
  12. detail = SimpleNamespace(
  13. installment_no=1,
  14. order_num=1,
  15. create_time=datetime(2025, 9, 1, 10, 0, 0),
  16. installment_due_date="20250901",
  17. due_amount=5000,
  18. transfer_amount=5000,
  19. pay_status="yjf",
  20. transfer_time=datetime(2025, 9, 15, 9, 20, 0),
  21. )
  22. summary = build_protocol_payment_summary(pay, [detail])
  23. self.assertIsNotNone(summary)
  24. self.assertEqual(summary["paymentDetails"][0]["transferTime"], "2025-09-15 09:20:00")
  25. def test_pick_earliest_transfer_time_by_protocol(self):
  26. rows = [
  27. ("p1", datetime(2025, 9, 20, 14, 30, 0)),
  28. ("p1", datetime(2025, 9, 15, 9, 20, 0)),
  29. ("p1", datetime(2025, 9, 18, 8, 0, 0)),
  30. ("p2", datetime(2025, 10, 1, 10, 0, 0)),
  31. ]
  32. got = pick_earliest_transfer_time_by_protocol(rows)
  33. self.assertEqual(got["p1"], datetime(2025, 9, 15, 9, 20, 0))
  34. self.assertEqual(got["p2"], datetime(2025, 10, 1, 10, 0, 0))
  35. if __name__ == "__main__":
  36. unittest.main()