Test the embedder factory function.
| 144 | |
| 145 | |
| 146 | class TestEmbedderFactory: |
| 147 | """Test the embedder factory function.""" |
| 148 | |
| 149 | def test_get_embedder_with_explicit_type(self): |
| 150 | """Test get_embedder with explicit embedder_type parameter.""" |
| 151 | from api.tools.embedder import get_embedder |
| 152 | |
| 153 | # Test Google embedder |
| 154 | google_embedder = get_embedder(embedder_type='google') |
| 155 | assert google_embedder is not None, "Google embedder should be created" |
| 156 | |
| 157 | # Test Bedrock embedder (mock boto3 to avoid hitting AWS credential providers) |
| 158 | with patch("api.bedrock_client.boto3.Session") as mock_session_cls: |
| 159 | mock_session = MagicMock() |
| 160 | mock_session.client.return_value = MagicMock() |
| 161 | mock_session_cls.return_value = mock_session |
| 162 | bedrock_embedder = get_embedder(embedder_type='bedrock') |
| 163 | assert bedrock_embedder is not None, "Bedrock embedder should be created" |
| 164 | |
| 165 | # Test OpenAI embedder |
| 166 | openai_embedder = get_embedder(embedder_type='openai') |
| 167 | assert openai_embedder is not None, "OpenAI embedder should be created" |
| 168 | |
| 169 | # Test Ollama embedder (may fail if Ollama not available, but should not crash) |
| 170 | try: |
| 171 | ollama_embedder = get_embedder(embedder_type='ollama') |
| 172 | assert ollama_embedder is not None, "Ollama embedder should be created" |
| 173 | except Exception as e: |
| 174 | logger.warning(f"Ollama embedder creation failed (expected if Ollama not available): {e}") |
| 175 | |
| 176 | def test_get_embedder_with_legacy_params(self): |
| 177 | """Test get_embedder with legacy boolean parameters.""" |
| 178 | from api.tools.embedder import get_embedder |
| 179 | |
| 180 | # Test with use_google_embedder=True |
| 181 | google_embedder = get_embedder(use_google_embedder=True) |
| 182 | assert google_embedder is not None, "Google embedder should be created with use_google_embedder=True" |
| 183 | |
| 184 | # Test with is_local_ollama=True |
| 185 | try: |
| 186 | ollama_embedder = get_embedder(is_local_ollama=True) |
| 187 | assert ollama_embedder is not None, "Ollama embedder should be created with is_local_ollama=True" |
| 188 | except Exception as e: |
| 189 | logger.warning(f"Ollama embedder creation failed (expected if Ollama not available): {e}") |
| 190 | |
| 191 | def test_get_embedder_auto_detection(self): |
| 192 | """Test get_embedder with automatic type detection.""" |
| 193 | from api.tools.embedder import get_embedder |
| 194 | |
| 195 | # Test auto-detection (should use current configuration) |
| 196 | embedder = get_embedder() |
| 197 | assert embedder is not None, "Auto-detected embedder should be created" |
| 198 | |
| 199 | |
| 200 | class TestEmbedderClients: |
nothing calls this directly
no outgoing calls
no test coverage detected