| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- """Tests for protocol invoice request CRUD helpers."""
- import unittest
- from unittest.mock import MagicMock, patch
- class TestInstallmentSummary(unittest.TestCase):
- def test_build_installment_summary_single(self):
- from app.crud.collection_protocol import build_installment_summary
- self.assertEqual(build_installment_summary([1]), "第1期")
- def test_build_installment_summary_multi(self):
- from app.crud.collection_protocol import build_installment_summary
- self.assertEqual(build_installment_summary([1, 2, 3]), "第1、2、3期")
- def test_build_installment_summary_lump_sum(self):
- from app.crud.collection_protocol import build_installment_summary
- self.assertEqual(build_installment_summary([None]), "趸交")
- class TestCreateInvoiceRequestValidation(unittest.TestCase):
- def test_rejects_empty_payment_detail_ids(self):
- from app.crud.collection_protocol import create_invoice_request
- mock_db = MagicMock()
- with self.assertRaises(ValueError) as ctx:
- create_invoice_request(
- mock_db,
- collection_protocol_id="proto-1",
- payment_detail_ids=[],
- tenant_no="t1",
- )
- self.assertIn("至少选择", str(ctx.exception))
- @patch("app.crud.collection_protocol._active_invoiced_payment_detail_ids", return_value={"pd-1"})
- def test_rejects_duplicate_payment_detail_in_active_request(self, _mock_active):
- from app.crud.collection_protocol import create_invoice_request
- mock_db = MagicMock()
- with self.assertRaises(ValueError) as ctx:
- create_invoice_request(
- mock_db,
- collection_protocol_id="proto-1",
- payment_detail_ids=["pd-1"],
- tenant_no="t1",
- user_info={"user_id": "u1"},
- )
- self.assertIn("已申请开票", str(ctx.exception))
- if __name__ == "__main__":
- unittest.main()
|