test_protocol_installment_ratios.py 1012 B

123456789101112131415161718192021222324252627
  1. import unittest
  2. from decimal import Decimal
  3. from app.services.protocol_payment_installment import (
  4. calc_installment_due_amounts_by_ratios,
  5. calc_unpaid_amounts_by_ratios,
  6. )
  7. class TestInstallmentRatios(unittest.TestCase):
  8. def test_default_50_10_x6(self):
  9. ratios = [50, 10, 10, 10, 10, 10]
  10. amounts = calc_installment_due_amounts_by_ratios(Decimal("10000"), ratios)
  11. self.assertEqual([float(a) for a in amounts], [5000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0])
  12. def test_partial_paid_normalize(self):
  13. remaining = Decimal("5000")
  14. ratios = [50, 10, 10, 10, 10, 10]
  15. unpaid_indices = [1, 2, 3, 4, 5]
  16. amounts = calc_unpaid_amounts_by_ratios(remaining, ratios, unpaid_indices)
  17. self.assertEqual(len(amounts), 5)
  18. self.assertAlmostEqual(sum(float(a) for a in amounts), 5000.0, places=2)
  19. self.assertEqual([float(a) for a in amounts], [1000.0, 1000.0, 1000.0, 1000.0, 1000.0])
  20. if __name__ == "__main__":
  21. unittest.main()