Files
zkxw/backend/tests/test_protocol_pay_mode_switch.py
T
2026-06-04 12:57:59 +08:00

111 lines
3.3 KiB
Python

"""缴费模式切换校验"""
import unittest
from app.services.protocol_pay_mode_switch import validate_payment_details_for_save
class TestValidatePaymentDetailsForSave(unittest.TestCase):
def test_dj_single_dfj_full_contract(self):
validate_payment_details_for_save(
"dj",
10000,
None,
[{"payStatus": "dfj", "dueAmount": 10000}],
)
def test_dj_rejects_multiple_dfj(self):
with self.assertRaises(ValueError) as ctx:
validate_payment_details_for_save(
"dj",
10000,
None,
[
{"payStatus": "dfj", "dueAmount": 5000},
{"payStatus": "dfj", "dueAmount": 5000},
],
)
self.assertIn("仅允许一条待缴费", str(ctx.exception))
def test_dj_partial_paid_remaining(self):
validate_payment_details_for_save(
"dj",
10000,
None,
[
{"payStatus": "yjf", "dueAmount": 2000},
{"payStatus": "dfj", "dueAmount": 8000},
],
)
def test_dj_partial_paid_wrong_remaining(self):
with self.assertRaises(ValueError):
validate_payment_details_for_save(
"dj",
10000,
None,
[
{"payStatus": "yjf", "dueAmount": 2000},
{"payStatus": "dfj", "dueAmount": 10000},
],
)
def test_fq_count_mismatch(self):
with self.assertRaises(ValueError):
validate_payment_details_for_save(
"fq",
6000,
6,
[{"payStatus": "dfj", "dueAmount": 6000}],
)
def test_fq_partial_paid_valid(self):
validate_payment_details_for_save(
"fq",
10000,
4,
[
{"payStatus": "yjf", "installmentNo": 1, "dueAmount": 2500},
{"payStatus": "yjf", "installmentNo": 2, "dueAmount": 2500},
{"payStatus": "dfj", "installmentNo": 3, "dueAmount": 2500},
{"payStatus": "dfj", "installmentNo": 4, "dueAmount": 2500},
],
)
def test_fq_jfqrz_rejected(self):
with self.assertRaises(ValueError):
validate_payment_details_for_save(
"fq",
6000,
2,
[
{"payStatus": "jfqrz", "dueAmount": 3000},
{"payStatus": "dfj", "dueAmount": 3000},
],
)
def test_fq_ytf_rejected(self):
with self.assertRaises(ValueError):
validate_payment_details_for_save(
"fq",
6000,
2,
[
{"payStatus": "ytf", "dueAmount": 3000},
{"payStatus": "dfj", "dueAmount": 3000},
],
)
def test_blocking_status_rejected(self):
with self.assertRaises(ValueError):
validate_payment_details_for_save(
"dj",
10000,
None,
[{"payStatus": "jfqrz", "dueAmount": 10000}],
)
if __name__ == "__main__":
unittest.main()