From 90af62b7f0a75e516e6c2f0dd8c168a6a6f549c1 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Fri, 30 Jan 2026 09:12:09 +0000 Subject: [PATCH] Add monitor and search tests --- tests/test_search.py | 66 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 tests/test_search.py diff --git a/tests/test_search.py b/tests/test_search.py new file mode 100644 index 0000000..ad90a24 --- /dev/null +++ b/tests/test_search.py @@ -0,0 +1,66 @@ +"""Tests for DevTrace search module.""" + +import pytest +from unittest.mock import Mock, patch, MagicMock + +from src.search.embeddings import EmbeddingManager +from src.search.semantic import SemanticSearch + + +class TestEmbeddingManager: + """Tests for EmbeddingManager.""" + + def test_manager_creation(self): + """Test manager creation.""" + manager = EmbeddingManager() + + assert manager.model_name == "all-MiniLM-L6-v2" + + def test_content_to_string(self): + """Test content to string conversion.""" + manager = EmbeddingManager() + + assert manager._content_to_string("test") == "test" + + result = manager._content_to_string({"key": "value"}) + assert "key" in result + assert "value" in result + + def test_compute_similarity(self): + """Test cosine similarity computation.""" + manager = EmbeddingManager() + + embedding1 = [1.0, 0.0, 0.0] + embedding2 = [1.0, 0.0, 0.0] + embedding3 = [-1.0, 0.0, 0.0] + + sim_same = manager.compute_similarity(embedding1, embedding2) + sim_opposite = manager.compute_similarity(embedding1, embedding3) + + assert sim_same == pytest.approx(1.0, abs=0.01) + assert sim_opposite == pytest.approx(-1.0, abs=0.01) + + +class TestSemanticSearch: + """Tests for SemanticSearch.""" + + def test_search_creation(self): + """Test search creation.""" + search = SemanticSearch() + + assert search.embedding_manager is not None + + def test_keyword_search(self): + """Test keyword search fallback.""" + search = SemanticSearch() + + documents = { + 1: {"content": "python test file"}, + 2: {"content": "javascript web app"}, + 3: {"content": "python api server"} + } + + results = search._keyword_search("python", documents) + + assert len(results) == 2 + assert all(r["score"] > 0 for r in results)