rag-backend-api / tests /unit /bootstrap /test_container.py
Loren's picture
First commit
a8c7066
Raw History Blame Contribute Delete
2.41 kB
import os
from types import SimpleNamespace
from unittest.mock import MagicMock, patch
import src.bootstrap.container as container_module
class DummyLLM:
def __init__(self, model_name: str | None = None):
self._model_name = model_name
def get_model_name(self) -> str | None:
return self._model_name
class DummyEmbedding:
def __init__(self, model_name: str | None = None):
self._model_name = model_name
def get_model_name(self) -> str | None:
return self._model_name
def get_embedding_function(self):
return MagicMock()
def test_container_uses_specific_ragas_llm_and_embedding(monkeypatch):
monkeypatch.setenv("RAGAS_LLM_MODEL_NAME", "ragas-llm")
monkeypatch.setenv("RAGAS_EMBED_MODEL_NAME", "ragas-embed")
monkeypatch.delenv("LANGFUSE_PUBLIC_KEY", raising=False)
monkeypatch.delenv("LANGFUSE_SECRET_KEY", raising=False)
monkeypatch.setenv("ENABLE_RAGAS_EVAL", "true")
created_ragas_kwargs = {}
def fake_ragas_adapter(**kwargs):
created_ragas_kwargs.update(kwargs)
return SimpleNamespace()
with patch.object(container_module, "HuggingFaceEmbeddingAdapter", side_effect=lambda model_name=None: DummyEmbedding(model_name=model_name)), \
patch.object(container_module, "GeminiLlmAdapter", side_effect=lambda prompt_builder, model_name=None: DummyLLM(model_name=model_name)), \
patch.object(container_module, "RagasEvaluationAdapter", side_effect=fake_ragas_adapter), \
patch.object(container_module, "NoOpEvaluationAdapter", return_value=SimpleNamespace()), \
patch.object(container_module, "NativeRetrievalAdapter", return_value=SimpleNamespace()), \
patch.object(container_module, "RagPromptBuilderAdapter", return_value=SimpleNamespace()), \
patch.object(container_module, "AskQuestionService", return_value=SimpleNamespace()), \
patch.object(container_module, "SubmitFeedbackService", return_value=SimpleNamespace()), \
patch.object(container_module, "LoggingObservabilityAdapter", return_value=SimpleNamespace()), \
patch.object(container_module, "LangfuseObservabilityAdapter", return_value=SimpleNamespace()):
container_module.Container()
assert created_ragas_kwargs["llm_port"].get_model_name() == "ragas-llm"
assert created_ragas_kwargs["embedding_port"].get_model_name() == "ragas-embed"