Files
zkxw/backend/tests/test_protocol_installment_ratios.py
T
2026-06-11 15:42:58 +08:00

28 lines
1012 B
Python

import unittest
from decimal import Decimal
from app.services.protocol_payment_installment import (
calc_installment_due_amounts_by_ratios,
calc_unpaid_amounts_by_ratios,
)
class TestInstallmentRatios(unittest.TestCase):
def test_default_50_10_x6(self):
ratios = [50, 10, 10, 10, 10, 10]
amounts = calc_installment_due_amounts_by_ratios(Decimal("10000"), ratios)
self.assertEqual([float(a) for a in amounts], [5000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0])
def test_partial_paid_normalize(self):
remaining = Decimal("5000")
ratios = [50, 10, 10, 10, 10, 10]
unpaid_indices = [1, 2, 3, 4, 5]
amounts = calc_unpaid_amounts_by_ratios(remaining, ratios, unpaid_indices)
self.assertEqual(len(amounts), 5)
self.assertAlmostEqual(sum(float(a) for a in amounts), 5000.0, places=2)
self.assertEqual([float(a) for a in amounts], [1000.0, 1000.0, 1000.0, 1000.0, 1000.0])
if __name__ == "__main__":
unittest.main()