优化所有alembic迁移脚本的离线模式支持,添加已存在对象检查逻辑,避免重复执行出错。 为各个迁移脚本添加对应的单元测试,覆盖核心场景保障逻辑正确性。 修改前端配置文件,将默认API地址切换为线上服务器8.138.234.141:4000。 新增本地数据备份文件wonderq-local-data.dump和项目发布包wonderq-admin-release-20260823-01.tar。
42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
from importlib.util import module_from_spec, spec_from_file_location
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
|
|
MIGRATION_PATH = Path(__file__).parents[1] / "alembic" / "versions" / "0017_home_content.py"
|
|
SPEC = spec_from_file_location("home_content_migration", MIGRATION_PATH)
|
|
assert SPEC and SPEC.loader
|
|
MIGRATION = module_from_spec(SPEC)
|
|
SPEC.loader.exec_module(MIGRATION)
|
|
|
|
|
|
def test_team_building_seed_contains_detail_fallback_fields():
|
|
for row in MIGRATION.SEED_TEAM_BUILDINGS:
|
|
assert row["detailSubtitle"] == row["description"]
|
|
assert row["detailParagraphs"] == [row["description"]]
|
|
|
|
|
|
def test_wild_archive_seed_contains_detail_images_fallback():
|
|
for row in MIGRATION.SEED_WILD_ARCHIVES:
|
|
assert row["images"] == [row["image"]]
|
|
|
|
|
|
def test_seed_rows_only_include_columns_available_in_existing_table():
|
|
timestamp = datetime(2026, 1, 1)
|
|
|
|
rows_without_detail_columns = MIGRATION.prepare_seed_rows(
|
|
MIGRATION.SEED_TEAM_BUILDINGS[:1],
|
|
{"id", "description", "createdAt", "updatedAt"},
|
|
timestamp,
|
|
)
|
|
assert "detailSubtitle" not in rows_without_detail_columns[0]
|
|
assert "detailParagraphs" not in rows_without_detail_columns[0]
|
|
|
|
rows_with_detail_columns = MIGRATION.prepare_seed_rows(
|
|
MIGRATION.SEED_TEAM_BUILDINGS[:1],
|
|
{"id", "description", "detailSubtitle", "detailParagraphs", "createdAt", "updatedAt"},
|
|
timestamp,
|
|
)
|
|
assert rows_with_detail_columns[0]["detailSubtitle"] == rows_with_detail_columns[0]["description"]
|
|
assert rows_with_detail_columns[0]["detailParagraphs"] == [rows_with_detail_columns[0]["description"]]
|