import time import tempfile from pathlib import Path from app.cache import FileCache from app.main import get_cache from app.settings import Settings def test_cache_returns_fresh_entry() -> None: with tempfile.TemporaryDirectory(dir=Path.cwd()) as temp_dir: cache = FileCache(cache_dir=temp_dir, default_ttl_seconds=10) cache.set_json("sample", {"x": 1}) entry = cache.get_json("sample") assert entry is not None assert entry.stale is False assert entry.value == {"x": 1} def test_cache_can_serve_stale_when_requested() -> None: with tempfile.TemporaryDirectory(dir=Path.cwd()) as temp_dir: cache = FileCache(cache_dir=temp_dir, default_ttl_seconds=0) cache.set_json("sample", {"x": 1}) time.sleep(0.01) fresh = cache.get_json("sample") stale = cache.get_json("sample", allow_stale=True) assert fresh is None assert stale is not None assert stale.stale is True assert stale.value == {"x": 1} def test_cache_is_disabled_when_not_configured() -> None: settings = Settings( _env_file=None, GITHUB_USERNAME="octocat", GITEA_BASE_URL="https://gitea.example.com", GITEA_USERNAME="octocat", ) cache = get_cache(settings) assert cache is None def test_cache_works_in_workspace_tempdir() -> None: with tempfile.TemporaryDirectory(dir=Path.cwd()) as temp_dir: cache = FileCache(cache_dir=temp_dir, default_ttl_seconds=10) cache.set_json("sample", {"x": 1}) entry = cache.get_json("sample") assert entry is not None assert entry.value == {"x": 1}