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()