"""按样本缴费:转账状态机与批次已缴/欠缴计算""" 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()