Files
zkxw/backend/tests/test_biz_no_generator.py
T
2026-05-28 00:15:29 +08:00

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()