civicsetu / tests /unit /retrieval /test_embedding_cache.py
adeshboudh16
feat: decouple frontend + multi-turn conversation + graph explorer + CAG layer
d91cbff
from __future__ import annotations
from unittest.mock import patch
from civicsetu.retrieval import cached_embed
from civicsetu.retrieval.cache import embedding_cache, make_key
def test_embedding_cache_hit_skips_model_call():
embedding_cache.clear()
query = "What are promoter obligations?"
fake_embedding = [0.1] * 768
embedding_cache[make_key(query)] = fake_embedding
with patch("civicsetu.ingestion.embedder.Embedder.embed_query", side_effect=RuntimeError("should not run")):
result = cached_embed(query)
assert result == fake_embedding
def test_embedding_cache_miss_calls_model_and_populates_cache():
embedding_cache.clear()
query = "unique query xyz"
fake_embedding = [0.5] * 768
with patch("civicsetu.ingestion.embedder.Embedder.embed_query", return_value=fake_embedding) as mock_embed:
result = cached_embed(query)
assert result == fake_embedding
assert embedding_cache[make_key(query)] == fake_embedding
mock_embed.assert_called_once_with(query)