feat: add snapshot cache and state file I/O methods

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tudor Sitaru
2026-05-15 16:09:50 +01:00
parent 8284b2593e
commit d77226413d
2 changed files with 105 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
import asyncio
import json
import pytest
from unittest.mock import AsyncMock, patch
from src.snapshot_downloader import SnapshotDownloader
def _downloader(tmp_path):
return SnapshotDownloader(output_dir=str(tmp_path), api_key="test-key")
# --- load_snapshot_cache ---
def test_load_snapshot_cache_missing(tmp_path):
assert _downloader(tmp_path).load_snapshot_cache() == []
def test_load_snapshot_cache_returns_data(tmp_path):
d = _downloader(tmp_path)
snapshots = [{"id": "1", "notes": "hello"}]
(tmp_path / "snapshots_cache.json").write_text(json.dumps(snapshots))
assert d.load_snapshot_cache() == snapshots
def test_load_snapshot_cache_malformed_returns_empty(tmp_path):
d = _downloader(tmp_path)
(tmp_path / "snapshots_cache.json").write_text("not json{{{")
assert d.load_snapshot_cache() == []
def test_load_snapshot_cache_non_list_returns_empty(tmp_path):
d = _downloader(tmp_path)
(tmp_path / "snapshots_cache.json").write_text('{"key": "val"}')
assert d.load_snapshot_cache() == []
# --- save_snapshot_cache ---
def test_save_snapshot_cache_writes_json(tmp_path):
d = _downloader(tmp_path)
snapshots = [{"id": "1"}, {"id": "2"}]
d.save_snapshot_cache(snapshots)
data = json.loads((tmp_path / "snapshots_cache.json").read_text())
assert data == snapshots
# --- load_last_run_date ---
def test_load_last_run_date_missing(tmp_path):
assert _downloader(tmp_path).load_last_run_date() is None
def test_load_last_run_date_returns_date(tmp_path):
d = _downloader(tmp_path)
(tmp_path / "last_run.json").write_text('{"last_date_to": "2025-01-01"}')
assert d.load_last_run_date() == "2025-01-01"
def test_load_last_run_date_malformed_returns_none(tmp_path):
d = _downloader(tmp_path)
(tmp_path / "last_run.json").write_text("not json")
assert d.load_last_run_date() is None
# --- save_last_run_date ---
def test_save_last_run_date_writes_json(tmp_path):
d = _downloader(tmp_path)
d.save_last_run_date("2025-06-01")
data = json.loads((tmp_path / "last_run.json").read_text())
assert data == {"last_date_to": "2025-06-01"}