fix(tools): guard csv replace against newer fan records
This commit is contained in:
1 parent
dd6b09807d
commit
998d0fd0c0
4 files changed
+43
-1
No files matched your search
@@ -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 解析/导入/替换/幂等测试全部通过")
|
||||
|
||||
|
||||
Reference in new issue
Block a user