28 lines
1012 B
Python
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()
|