45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""按样本缴费:转账状态机与批次已缴/欠缴计算"""
|
|
|
|
from decimal import Decimal
|
|
import unittest
|
|
|
|
from app.services.protocol_transfer_status import (
|
|
can_confirm_receipt,
|
|
can_submit_receipt,
|
|
schedule_paid_and_arrears,
|
|
)
|
|
|
|
|
|
class TestTransferStatusRules(unittest.TestCase):
|
|
def test_submit_only_dfj(self):
|
|
self.assertTrue(can_submit_receipt("dfj"))
|
|
self.assertFalse(can_submit_receipt("jfqrz"))
|
|
self.assertFalse(can_submit_receipt("yjf"))
|
|
self.assertFalse(can_submit_receipt(""))
|
|
self.assertFalse(can_submit_receipt(None))
|
|
|
|
def test_confirm_only_jfqrz(self):
|
|
self.assertTrue(can_confirm_receipt("jfqrz"))
|
|
self.assertFalse(can_confirm_receipt("dfj"))
|
|
self.assertFalse(can_confirm_receipt("yjf"))
|
|
|
|
def test_schedule_arrears(self):
|
|
paid, arrears = schedule_paid_and_arrears(
|
|
due=Decimal("1000"),
|
|
confirmed_transfers=[Decimal("300"), Decimal("200")],
|
|
)
|
|
self.assertEqual(paid, Decimal("500"))
|
|
self.assertEqual(arrears, Decimal("500"))
|
|
|
|
def test_schedule_arrears_overpay(self):
|
|
paid, arrears = schedule_paid_and_arrears(
|
|
due=Decimal("100"),
|
|
confirmed_transfers=[Decimal("60"), Decimal("50")],
|
|
)
|
|
self.assertEqual(paid, Decimal("110"))
|
|
self.assertEqual(arrears, Decimal("-10"))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|