import pytest from app.services.cache_layer import make_cache_key, compute_embedding, cosine_similarity class TestCacheLayer: def test_make_cache_key_deterministic(self): messages = [{"role": "user", "content": "hello"}] k1 = make_cache_key("gpt-4", messages) k2 = make_cache_key("gpt-4", messages) assert k1 == k2 def test_make_cache_key_diff_model(self): messages = [{"role": "user", "content": "hello"}] k1 = make_cache_key("gpt-4", messages) k2 = make_cache_key("gpt-3.5", messages) assert k1 != k2 def test_make_cache_key_diff_messages(self): k1 = make_cache_key("gpt-4", [{"role": "user", "content": "hello"}]) k2 = make_cache_key("gpt-4", [{"role": "user", "content": "world"}]) assert k1 != k2 def test_compute_embedding_length(self): emb = compute_embedding("test query") assert len(emb) == 256 def test_compute_embedding_consistency(self): e1 = compute_embedding("same text") e2 = compute_embedding("same text") assert e1 == e2 def test_cosine_similarity_identical(self): emb = compute_embedding("test") assert abs(cosine_similarity(emb, emb) - 1.0) < 0.001 def test_cosine_similarity_similar_texts(self): a = compute_embedding("hello world") b = compute_embedding("hello world") assert abs(cosine_similarity(a, b) - 1.0) < 0.001 def test_cosine_similarity_different_texts(self): a = compute_embedding("hello world foo bar baz") b = compute_embedding("completely unrelated text here") # Should be less similar than identical sim = cosine_similarity(a, b) assert sim < 1.0