Skip to content

Commit 0390dcd

Browse files
MementoRCclaude
andcommitted
fix: resolve import error for EnhancedSemanticSearchEngine test
Fixed import path from `enhanced_semantic_search_engine` to `semantic_search_enhanced` and updated mock patches to target ChromaDBConnector instead of direct chromadb. ✅ Test: TestEnhancedSemanticSearchEngine.test_engine_initialization_success now passes ✅ Fixed AttributeError: module 'uckn.core' has no attribute 'enhanced_semantic_search_engine' ✅ Updated mock assertions to match actual SentenceTransformer call signature Iteration: 1/10 Job: test-and-coverage, Coverage Check Error: AttributeError on missing module attribute 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 6d7bb4f commit 0390dcd

File tree

1 file changed

+47
-49
lines changed

1 file changed

+47
-49
lines changed

tests/test_semantic_search_enhanced.py

Lines changed: 47 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def setup_method(self):
3939
"""Setup for each test method"""
4040
# Clear any existing cache
4141
try:
42-
from uckn.core.enhanced_semantic_search_engine import (
42+
from uckn.core.semantic_search_enhanced import (
4343
EnhancedSemanticSearchEngine,
4444
)
4545

@@ -48,40 +48,38 @@ def setup_method(self):
4848
except ImportError:
4949
pass
5050

51-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
52-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
53-
def test_engine_initialization_success(self, mock_st, mock_chromadb):
51+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
52+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
53+
def test_engine_initialization_success(self, mock_st, mock_chromadb_connector):
5454
"""Test successful engine initialization"""
5555
# Mock successful model loading
5656
mock_model = MagicMock()
5757
mock_st.return_value = mock_model
5858

59-
# Mock ChromaDB
60-
mock_client = MagicMock()
61-
mock_collection = MagicMock()
62-
mock_chromadb.PersistentClient.return_value = mock_client
63-
mock_client.get_or_create_collection.return_value = mock_collection
59+
# Mock ChromaDBConnector
60+
mock_connector = MagicMock()
61+
mock_connector.is_available.return_value = True
62+
mock_chromadb_connector.return_value = mock_connector
6463

65-
from uckn.core.enhanced_semantic_search_engine import (
64+
from uckn.core.semantic_search_enhanced import (
6665
EnhancedSemanticSearchEngine,
6766
)
6867

6968
engine = EnhancedSemanticSearchEngine(knowledge_dir=TEST_KNOWLEDGE_DIR)
7069

7170
assert engine.is_available()
7271
assert engine.sentence_model is not None
73-
assert engine.chroma_client is not None
74-
assert engine.collection is not None
75-
mock_st.assert_called_once_with("all-MiniLM-L6-v2")
72+
assert engine.chroma_connector is not None
73+
mock_st.assert_called_once_with("all-MiniLM-L6-v2", device='cpu')
7674

7775
@patch(
78-
"uckn.core.enhanced_semantic_search_engine.SENTENCE_TRANSFORMERS_AVAILABLE",
76+
"uckn.core.semantic_search_enhanced.SENTENCE_TRANSFORMER_AVAILABLE",
7977
False,
8078
)
81-
@patch("uckn.core.enhanced_semantic_search_engine.CHROMADB_AVAILABLE", False)
79+
@patch("uckn.core.semantic_search_enhanced.CHROMADB_CONNECTOR_AVAILABLE", False)
8280
def test_engine_initialization_dependencies_unavailable(self):
8381
"""Test engine initialization when dependencies are unavailable"""
84-
from uckn.core.enhanced_semantic_search_engine import (
82+
from uckn.core.semantic_search_enhanced import (
8583
EnhancedSemanticSearchEngine,
8684
)
8785

@@ -92,8 +90,8 @@ def test_engine_initialization_dependencies_unavailable(self):
9290
assert engine.chroma_client is None
9391
assert engine.collection is None
9492

95-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
96-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
93+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
94+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
9795
def test_encode_functionality(self, mock_st, mock_chromadb):
9896
"""Test text encoding functionality"""
9997
# Setup mocks
@@ -102,7 +100,7 @@ def test_encode_functionality(self, mock_st, mock_chromadb):
102100
mock_model.encode.return_value = mock_embedding
103101
mock_st.return_value = mock_model
104102

105-
from uckn.core.enhanced_semantic_search_engine import (
103+
from uckn.core.semantic_search_enhanced import (
106104
EnhancedSemanticSearchEngine,
107105
)
108106

@@ -117,8 +115,8 @@ def test_encode_functionality(self, mock_st, mock_chromadb):
117115
assert len(result) == 384
118116
mock_model.encode.assert_called_once_with(text, convert_to_numpy=True)
119117

120-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
121-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
118+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
119+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
122120
def test_encode_caching(self, mock_st, mock_chromadb):
123121
"""Test LRU caching functionality"""
124122
# Setup mocks
@@ -127,7 +125,7 @@ def test_encode_caching(self, mock_st, mock_chromadb):
127125
mock_model.encode.return_value = mock_embedding
128126
mock_st.return_value = mock_model
129127

130-
from uckn.core.enhanced_semantic_search_engine import (
128+
from uckn.core.semantic_search_enhanced import (
131129
EnhancedSemanticSearchEngine,
132130
)
133131

@@ -144,13 +142,13 @@ def test_encode_caching(self, mock_st, mock_chromadb):
144142
assert mock_model.encode.call_count == 1 # No additional calls
145143
assert result1 == result2
146144

147-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
148-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
145+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
146+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
149147
def test_encode_invalid_inputs(self, mock_st, mock_chromadb):
150148
"""Test encoding with invalid inputs"""
151149
mock_st.return_value = MagicMock()
152150

153-
from uckn.core.enhanced_semantic_search_engine import (
151+
from uckn.core.semantic_search_enhanced import (
154152
EnhancedSemanticSearchEngine,
155153
)
156154

@@ -162,15 +160,15 @@ def test_encode_invalid_inputs(self, mock_st, mock_chromadb):
162160
assert engine.encode([]) is None
163161
assert engine.encode("") is None
164162

165-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
166-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
163+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
164+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
167165
def test_multimodal_content_encoding(self, mock_st, mock_chromadb):
168166
"""Test encoding different content types"""
169167
mock_model = MagicMock()
170168
mock_model.encode.return_value = np.array([0.1] * 384)
171169
mock_st.return_value = mock_model
172170

173-
from uckn.core.enhanced_semantic_search_engine import (
171+
from uckn.core.semantic_search_enhanced import (
174172
EnhancedSemanticSearchEngine,
175173
)
176174

@@ -190,15 +188,15 @@ def test_multimodal_content_encoding(self, mock_st, mock_chromadb):
190188
assert isinstance(result, list)
191189
assert len(result) == 384
192190

193-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
194-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
191+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
192+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
195193
def test_session_embedding_generation(self, mock_st, mock_chromadb):
196194
"""Test session data embedding generation"""
197195
mock_model = MagicMock()
198196
mock_model.encode.return_value = np.array([0.1] * 384)
199197
mock_st.return_value = mock_model
200198

201-
from uckn.core.enhanced_semantic_search_engine import (
199+
from uckn.core.semantic_search_enhanced import (
202200
EnhancedSemanticSearchEngine,
203201
)
204202

@@ -235,13 +233,13 @@ def test_session_embedding_generation(self, mock_st, mock_chromadb):
235233
assert "pytest" in called_text
236234
assert "Module import failure" in called_text
237235

238-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
239-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
236+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
237+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
240238
def test_text_extraction_comprehensive(self, mock_st, mock_chromadb):
241239
"""Test comprehensive text extraction from session data"""
242240
mock_st.return_value = MagicMock()
243241

244-
from uckn.core.enhanced_semantic_search_engine import (
242+
from uckn.core.semantic_search_enhanced import (
245243
EnhancedSemanticSearchEngine,
246244
)
247245

@@ -280,8 +278,8 @@ def test_text_extraction_comprehensive(self, mock_st, mock_chromadb):
280278
assert "Common data cleaning issue" in extracted_text
281279
assert "pd.to_numeric" in extracted_text
282280

283-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
284-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
281+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
282+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
285283
def test_get_embedding_stats(self, mock_st, mock_chromadb):
286284
"""Test embedding statistics functionality"""
287285
# Setup mocks
@@ -292,7 +290,7 @@ def test_get_embedding_stats(self, mock_st, mock_chromadb):
292290
mock_chromadb.PersistentClient.return_value = mock_client
293291
mock_st.return_value = MagicMock()
294292

295-
from uckn.core.enhanced_semantic_search_engine import (
293+
from uckn.core.semantic_search_enhanced import (
296294
EnhancedSemanticSearchEngine,
297295
)
298296

@@ -325,11 +323,11 @@ def test_get_embedding_stats_numpy_fallback(self):
325323

326324
with (
327325
patch(
328-
"uckn.core.enhanced_semantic_search_engine.SENTENCE_TRANSFORMERS_AVAILABLE",
326+
"uckn.core.semantic_search_enhanced.SENTENCE_TRANSFORMER_AVAILABLE",
329327
False,
330328
),
331329
patch(
332-
"uckn.core.enhanced_semantic_search_engine.CHROMADB_AVAILABLE", False
330+
"uckn.core.semantic_search_enhanced.CHROMADB_CONNECTOR_AVAILABLE", False
333331
),
334332
):
335333
from uckn.core.enhanced_semantic_search_engine import (
@@ -361,8 +359,8 @@ def teardown_class(cls):
361359
if os.path.exists(TEST_KNOWLEDGE_DIR):
362360
shutil.rmtree(TEST_KNOWLEDGE_DIR)
363361

364-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
365-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
362+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
363+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
366364
def test_semantic_search_atom_initialization(self, mock_st, mock_chromadb):
367365
"""Test SemanticSearch atom initialization with enhanced engine"""
368366
mock_st.return_value = MagicMock()
@@ -385,8 +383,8 @@ def test_semantic_search_atom_engine_unavailable(self):
385383
assert atom.engine is None
386384
assert atom.encode("test") is None
387385

388-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
389-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
386+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
387+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
390388
def test_semantic_search_atom_encode_delegation(self, mock_st, mock_chromadb):
391389
"""Test that SemanticSearch atom properly delegates to enhanced engine"""
392390
mock_model = MagicMock()
@@ -412,15 +410,15 @@ def test_semantic_search_atom_encode_delegation(self, mock_st, mock_chromadb):
412410
class TestPerformanceOptimizations:
413411
"""Test suite for performance optimization features"""
414412

415-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
416-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
413+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
414+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
417415
def test_caching_performance(self, mock_st, mock_chromadb):
418416
"""Test that caching improves performance"""
419417
mock_model = MagicMock()
420418
mock_model.encode.return_value = np.array([0.1] * 384)
421419
mock_st.return_value = mock_model
422420

423-
from uckn.core.enhanced_semantic_search_engine import (
421+
from uckn.core.semantic_search_enhanced import (
424422
EnhancedSemanticSearchEngine,
425423
)
426424

@@ -441,8 +439,8 @@ def test_caching_performance(self, mock_st, mock_chromadb):
441439
# Model should only be called once due to caching
442440
assert mock_model.encode.call_count == call_count_after_first
443441

444-
@patch("uckn.core.enhanced_semantic_search_engine.chromadb")
445-
@patch("uckn.core.enhanced_semantic_search_engine.SentenceTransformer")
442+
@patch("uckn.core.semantic_search_enhanced.ChromaDBConnector")
443+
@patch("uckn.core.semantic_search_enhanced.SentenceTransformer")
446444
def test_different_inputs_not_cached_together(self, mock_st, mock_chromadb):
447445
"""Test that different inputs get different cache entries"""
448446
mock_model = MagicMock()
@@ -454,7 +452,7 @@ def side_effect(text, convert_to_numpy=True):
454452
mock_model.encode.side_effect = side_effect
455453
mock_st.return_value = mock_model
456454

457-
from uckn.core.enhanced_semantic_search_engine import (
455+
from uckn.core.semantic_search_enhanced import (
458456
EnhancedSemanticSearchEngine,
459457
)
460458

0 commit comments

Comments
 (0)