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