gapura-rag / tests /test_multi_source.py
gapura-dev's picture
Initial commit
7f1549b
Raw
History Blame Contribute Delete
1.61 kB
from __future__ import annotations
import pytest
from app.config import Settings
from app.models.types import Language, DocId, ChunkId
from app.services import retriever
from tests.conftest import make_context
class MockVectorStore:
def __init__(self):
self.last_query_sources = None
def query_similar(self, embedding, top_k, filter_dict=None, sources=None):
self.last_query_sources = sources
# Simulate results from different sources
return [
make_context(chunk_id="a1", source_filename="a.pdf"),
make_context(chunk_id="b1", source_filename="b.pdf"),
make_context(chunk_id="c1", source_filename="c.pdf"),
]
def expand_contexts(self, contexts, radius):
return contexts
def test_retrieve_passes_sources_to_vector_store(monkeypatch):
settings = Settings(
hf_token="token",
pinecone_api_key="pinecone",
hyde_enabled=False,
rerank_enabled=False,
)
store = MockVectorStore()
monkeypatch.setattr(retriever, "embed_query", lambda text, _: [0.1] * 768)
# Test with specific sources
test_sources = ["a.pdf", "b.pdf"]
retriever.retrieve(
query="test",
settings=settings,
vector_store=store,
language=Language.EN,
sources=test_sources
)
assert store.last_query_sources == test_sources
# Test without sources
retriever.retrieve(
query="test",
settings=settings,
vector_store=store,
language=Language.EN,
)
assert store.last_query_sources is None