| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- """biz_no_generator 单元测试"""
- import unittest
- from unittest.mock import MagicMock
- from app.crud.biz_no_generator import (
- MAX_SEQ,
- PREFIX_COLLECTION,
- PREFIX_DONATION,
- _format_biz_no,
- _prefix_for,
- )
- class TestBizNoGenerator(unittest.TestCase):
- def test_prefix_for(self):
- self.assertEqual(_prefix_for("collection"), PREFIX_COLLECTION)
- self.assertEqual(_prefix_for("donation"), PREFIX_DONATION)
- def test_format_biz_no(self):
- self.assertEqual(_format_biz_no("XBCC", "20260527", 1), "XBCC20260527000001")
- self.assertEqual(_format_biz_no("JZCC", "20260527", 42), "JZCC20260527000042")
- def test_max_seq(self):
- self.assertEqual(MAX_SEQ, 999999)
- class TestAllocateNextBizNo(unittest.TestCase):
- def test_allocate_raises_when_seq_exhausted(self):
- from app.crud import biz_no_generator as gen
- db = MagicMock()
- db.execute.side_effect = [
- None,
- MagicMock(scalar=lambda: MAX_SEQ + 1),
- ]
- with self.assertRaises(ValueError) as ctx:
- gen.allocate_next_biz_no(db, tenant_no="zkxw", kind="collection")
- self.assertIn("序号已用尽", str(ctx.exception))
- if __name__ == "__main__":
- unittest.main()
|