Spaces:
Sleeping
Sleeping
| 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 | |