from app.public_cache import PublicResponseCache def test_cache_copies_values_and_invalidates() -> None: cache = PublicResponseCache() original = [{"score": 10}] cache.set(("activity",), original) original[0]["score"] = 99 assert cache.get(("activity",), 20) == [{"score": 10}] cache.invalidate() assert cache.get(("activity",), 20) is None def test_cache_bounds_memory_and_rejects_result_started_before_invalidation() -> None: cache = PublicResponseCache(max_entries=2) generation = cache.generation() cache.set((1,), [1]) cache.set((2,), [2]) cache.set((3,), [3]) assert cache.get((1,), 20) is None cache.invalidate() cache.set((4,), [4], generation=generation) assert cache.get((4,), 20) is None