CI / backend (pull_request) Canceled after 0s
CI / shell (pull_request) Canceled after 0s
CI / frontend (pull_request) Canceled after 0s
CI / arm64-smoke (pull_request) Canceled after 0s
CI / backend (push) Canceled after 0s
CI / shell (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / arm64-smoke (push) Canceled after 0s
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from pathlib import Path
|
|
|
|
from app.backup.service import BackupService
|
|
|
|
|
|
def test_backup_and_restore_roundtrip(tmp_path: Path) -> None:
|
|
data_dir = tmp_path / "data"
|
|
backup_dir = data_dir / "backups"
|
|
data_dir.mkdir(parents=True)
|
|
sample_file = data_dir / "settings.json"
|
|
sample_file.write_text('{"scene":"base"}', encoding="utf-8")
|
|
|
|
service = BackupService(data_dir=data_dir, backup_dir=backup_dir)
|
|
created = service.create_backup("audit-backup")
|
|
|
|
sample_file.write_text('{"scene":"modified"}', encoding="utf-8")
|
|
service.restore_backup(created.id)
|
|
|
|
assert sample_file.read_text(encoding="utf-8") == '{"scene":"base"}'
|
|
assert any(item.label == "audit-backup" for item in service.list_backups())
|
|
|
|
|
|
def test_restore_empty_backup_clears_runtime_files(tmp_path: Path) -> None:
|
|
data_dir = tmp_path / "data"
|
|
backup_dir = data_dir / "backups"
|
|
data_dir.mkdir(parents=True)
|
|
|
|
service = BackupService(data_dir=data_dir, backup_dir=backup_dir)
|
|
empty_backup = service.create_backup("empty-runtime")
|
|
|
|
sample_file = data_dir / "settings.json"
|
|
sample_file.write_text('{"scene":"modified"}', encoding="utf-8")
|
|
service.restore_backup(empty_backup.id)
|
|
|
|
assert not sample_file.exists()
|