"""Unit tests for MockEmbedder."""
import pytest
from providers.embedder.mock_embedder import MockEmbedder, ZeroEmbedder, MOCK_EMBEDDING_DIM
class TestMockEmbedder:
"""Tests for MockEmbedder deterministic vector generation."""
def test_embed_texts_returns_correct_count(self):
embedder = MockEmbedder()
texts = ["hello", "world", "test"]
results = embedder.embed_texts(texts)
assert len(results) == len(texts)
def test_embed_texts_returns_correct_dimension(self):
embedder = MockEmbedder()
texts = ["hello"]
results = embedder.embed_texts(texts)
assert len(results[0]) == MOCK_EMBEDDING_DIM
def test_embed_texts_is_deterministic(self):
"""Same text should produce same vector across calls."""
embedder = MockEmbedder()
text = "consistent text"
vector1 = embedder.embed_texts([text])[0]
vector2 = embedder.embed_texts([text])[0]
assert vector1 == vector2
def test_embed_texts_different_texts_different_vectors(self):
"""Different texts should produce different vectors."""
embedder = MockEmbedder()
vector1 = embedder.embed_texts(["text one"])[0]
vector2 = embedder.embed_texts(["text two"])[0]
assert vector1 != vector2
def test_custom_dimension(self):
embedder = MockEmbedder(dimension=128)
texts = ["test"]
results = embedder.embed_texts(texts)
assert len(results[0]) == 128
def test_empty_text(self):
embedder = MockEmbedder()
results = embedder.embed_texts([""])
assert len(results[0]) == MOCK_EMBEDDING_DIM
class TestZeroEmbedder:
"""Tests for ZeroEmbedder."""
def test_returns_zero_vectors(self):
embedder = ZeroEmbedder()
texts = ["hello", "world"]
results = embedder.embed_texts(texts)
assert len(results) == 2
assert all(all(v == 0.0 for v in vec) for vec in results)
def test_all_identical(self):
"""All texts get identical zero vectors."""
embedder = ZeroEmbedder()
results = embedder.embed_texts(["a", "b", "c"])
assert results[0] == results[1] == results[2]