"""验证 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