"""Tests for ResponseCache with pluggable backends.""" from fusionagi.api.cache import MemoryCacheBackend, ResponseCache def test_memory_backend_basic(): backend = MemoryCacheBackend(max_size=10, default_ttl=60.0) backend.set("k1", {"data": "value"}) assert backend.get("k1") == {"data": "value"} def test_memory_backend_delete(): backend = MemoryCacheBackend() backend.set("k2", "val") assert backend.delete("k2") is True assert backend.get("k2") is None def test_memory_backend_clear(): backend = MemoryCacheBackend() backend.set("a", 1) backend.set("b", 2) assert backend.clear() == 2 assert backend.get("a") is None def test_memory_backend_stats(): backend = MemoryCacheBackend(max_size=100) backend.set("s1", "v1") stats = backend.stats() assert stats["backend"] == "memory" assert stats["total"] == 1 def test_response_cache_with_backend(): backend = MemoryCacheBackend(max_size=50, default_ttl=120.0) cache = ResponseCache(backend=backend) cache.set("hello", "session-1", {"answer": "world"}) assert cache.get("hello", "session-1") == {"answer": "world"} assert cache.get("hello", "session-2") is None # different session def test_response_cache_tenant_isolation(): cache = ResponseCache() cache.set("prompt", "s1", "result-a", tenant_id="tenant-1") cache.set("prompt", "s1", "result-b", tenant_id="tenant-2") assert cache.get("prompt", "s1", "tenant-1") == "result-a" assert cache.get("prompt", "s1", "tenant-2") == "result-b"