File size: 1,033 Bytes
d91cbff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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)