43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
"""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()
|