签入版本

This commit is contained in:
2026-09-12 18:57:19 +08:00
parent d45b61d808
commit 2857e0f2da
295 changed files with 20713 additions and 13125 deletions
+55
View File
@@ -0,0 +1,55 @@
"""
字典一键初始化脚本测试(seed_dict)
=============================================================
验证 scripts/seed_dict.py 的幂等初始化:
- 首次执行创建 DICT_SEED 中全部字典(dict + dict_item)
- 二次执行不重复(按 code 跳过已存在)
- 种入后 dict_utils 可从字典表取值
"""
import pytest
from src.modules.dictionary import dict_utils
from src.modules.dictionary.dict.repository import DictRepository
from src.modules.dictionary.dict_item.repository import DictItemRepository
from scripts.seed_dict import seed_dict
@pytest.fixture(autouse=True)
def _clear_dict_cache():
"""每用例前后清空 dict_utils 缓存,避免用例间 sqlite 库重建导致的脏缓存"""
dict_utils.clear_cache()
yield
dict_utils.clear_cache()
class TestSeedDict:
def test_seed_creates_all_dicts(self, app):
from scripts.seed_dict import DICT_SEED
with app.app_context():
created = seed_dict(app)
assert created == len(DICT_SEED)
for spec in DICT_SEED:
dict_obj = DictRepository.first_by({"code": spec["code"]})
assert dict_obj is not None, spec["code"]
assert len(DictItemRepository.list_by_code(spec["code"])) == len(spec["items"])
def test_seed_idempotent(self, app):
with app.app_context():
seed_dict(app)
first_items = len(DictItemRepository.list_by_code("gender"))
created = seed_dict(app)
assert created == 0
# 重跑不重复:item 数不变、dict 仍只有一份
assert len(DictItemRepository.list_by_code("gender")) == first_items
assert len(DictRepository.find_list(filters={"code": "gender"})) == 1
def test_seed_works_with_dict_utils(self, app):
with app.app_context():
seed_dict(app)
assert dict_utils.get_name("gender", 1) == "男"
assert dict_utils.get_name("operation_type", 3) == "新增"
assert dict_utils.get_name("article_status", 0) == "正常"
assert dict_utils.get_name("operation_source", "0") == "后台系统"