Address PR feedback: Improve code quality and test coverage

Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
Devin AI
2025-05-14 19:24:55 +00:00
parent 0c4bdbf379
commit 6a1d4c1a73
3 changed files with 99 additions and 13 deletions

View File

@@ -1,6 +1,8 @@
import pytest
from unittest.mock import patch, MagicMock
from crewai.utilities.embedding_configurator import EmbeddingConfigurator
from crewai.knowledge.embedder.chromadb.utils.embedding_functions.voyageai_embedding_function import VoyageAIEmbeddingFunction
class TestEmbeddingConfigurator:
@@ -43,3 +45,37 @@ class TestEmbeddingConfigurator:
model_name="voyage-3", api_key="test-key"
)
assert embedder == mock_instance
def test_configure_voyageai_embedder_missing_api_key(self):
"""Test that the VoyageAI embedder raises an error when API key is missing."""
with patch(
"crewai.utilities.embedding_configurator.VoyageAIEmbeddingFunction"
) as mock_voyageai:
mock_voyageai.side_effect = ValueError("API key is required for VoyageAI embeddings")
config = {} # Empty config without API key
model_name = "voyage-3"
configurator = EmbeddingConfigurator()
with pytest.raises(ValueError, match="API key is required"):
configurator._configure_voyageai(config, model_name)
def test_configure_voyageai_embedder_custom_model(self):
"""Test that the VoyageAI embedder works with different model names."""
with patch(
"crewai.utilities.embedding_configurator.VoyageAIEmbeddingFunction"
) as mock_voyageai:
mock_instance = MagicMock()
mock_voyageai.return_value = mock_instance
config = {"api_key": "test-key"}
model_name = "voyage-3.5-lite" # Using a different model
configurator = EmbeddingConfigurator()
embedder = configurator._configure_voyageai(config, model_name)
mock_voyageai.assert_called_once_with(
model_name=model_name, api_key="test-key"
)
assert embedder == mock_instance