Files
life-echo/api/tests/test_migration_language_preference_default.py

35 lines
1.1 KiB
Python
Raw Normal View History

"""验证 0018 迁移使用 server_default='zh' 落库(防止已有用户 NULL"""
from __future__ import annotations
from pathlib import Path
from app.features.user.models import User
def test_migration_0018_uses_server_default_zh() -> None:
path = (
Path(__file__).resolve().parent.parent
/ "alembic"
/ "versions"
/ "0018_users_language_preference.py"
)
src = path.read_text(encoding="utf-8")
assert "language_preference" in src
# server_default 'zh' 是已有用户回填的关键
assert "server_default=sa.text(\"'zh'\")" in src
assert "nullable=False" in src
# 在多行 op.add_column 调用中第一参数为 "users"
assert "op.add_column" in src
assert '"users"' in src
def test_user_model_language_preference_default_zh() -> None:
"""模型层默认值与迁移一致;新建实例不传值时为 'zh'"""
column = User.__table__.c.language_preference
assert column.default is not None
assert column.default.arg == "zh"
assert column.server_default is not None
assert "zh" in str(column.server_default.arg)
assert column.nullable is False