Files
2026-09-12 22:24:53 +08:00

56 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
字典一键初始化脚本测试(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") == "后台系统"