| 123456789101112131415161718192021222324252627 |
- 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()
|