fix(tools): guard csv replace against newer fan records

This commit is contained in:
kairee committed 2026-11-01 02:25:18 +08:00
1 parent dd6b09807d
commit 998d0fd0c0
4 files changed
+43 -1

No files matched your search

+24
View File
@@ -104,6 +104,29 @@ def test_import_default_force_and_replace():
db.close()
def test_replace_guard_for_newer_rows():
series = parse_fans_csv(CSV_TEXT)
with tempfile.TemporaryDirectory() as tmp:
db = Database(Path(tmp) / "app.db")
db.initialize()
try:
repo = Repository(db)
repo.upsert_up_stat("2026-02-01", 37754047, follower=2000, following=None, ok=True, captured_at=1)
try:
import_fans_series(db, series, replace=True)
except ValueError as exc:
assert "allow-lossy-replace" in str(exc)
else:
raise AssertionError("存在更新记录时应拒绝 --replace")
result = import_fans_series(
db, series, replace=True, allow_lossy_replace=True, dry_run=True
)
assert result["deleted"] == 1
assert repo.get_up_stat("2026-02-01", 37754047)["follower"] == 2000
finally:
db.close()
def test_replace_dry_run_counts_only():
series = parse_fans_csv(CSV_TEXT)
with tempfile.TemporaryDirectory() as tmp:
@@ -124,6 +147,7 @@ def main_test():
test_parse_csv()
test_parse_rejects_bad_values()
test_import_default_force_and_replace()
test_replace_guard_for_newer_rows()
test_replace_dry_run_counts_only()
print("OK: 粉丝 CSV 解析/导入/替换/幂等测试全部通过")