| 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") |
| |
| sim = cosine_similarity(a, b) |
| assert sim < 1.0 |
|
|