import os import time import pytest from cache import get_cached, set_cached @pytest.fixture def tmp_cache(tmp_path, monkeypatch): import cache as cache_module monkeypatch.setattr(cache_module, 'CACHE_DIR', str(tmp_path)) return tmp_path def test_get_cached_returns_none_for_missing_key(tmp_cache): assert get_cached('no_such_key') is None def test_set_and_get_cached_roundtrip(tmp_cache): set_cached('my_key', {'a': 1}) assert get_cached('my_key') == {'a': 1} def test_get_cached_no_ttl_never_expires(tmp_cache): set_cached('k', [1, 2, 3]) # Backdate the file by 2 days path = tmp_cache / 'k.json' old = time.time() - 2 * 86400 os.utime(path, (old, old)) assert get_cached('k') == [1, 2, 3] def test_get_cached_within_ttl(tmp_cache): set_cached('k', 'fresh') assert get_cached('k', ttl=3600) == 'fresh' def test_get_cached_expired_returns_none(tmp_cache): set_cached('k', 'stale') path = tmp_cache / 'k.json' old = time.time() - 25 * 3600 # 25 hours ago os.utime(path, (old, old)) assert get_cached('k', ttl=24 * 3600) is None