import os import tempfile import pytest from snip.db import Database from snip.search import SearchEngine @pytest.fixture def search_engine(): with tempfile.NamedTemporaryFile(suffix=".db", delete=False) as f: db_path = f.name db = Database(db_path) db.init_schema() engine = SearchEngine(db_path) db.create_snippet( title="Python Hello World", code="print('hello')", description="A simple Python greeting", language="python", tags=["python", "hello", "beginner"], ) db.create_snippet( title="JavaScript Hello", code="console.log('hello')", description="JavaScript greeting", language="javascript", tags=["javascript", "hello"], ) db.create_snippet( title="Python List Comprehension", code="[x**2 for x in range(10)]", description="Python list comprehension example", language="python", tags=["python", "advanced"], ) yield engine db.close() os.unlink(db_path) def test_basic_search(search_engine): results = search_engine.search("hello") assert len(results) == 2 def test_search_with_language_filter(search_engine): results = search_engine.search("hello", language="python") assert len(results) == 1 assert results[0]["language"] == "python" def test_search_with_tag_filter(search_engine): results = search_engine.search("*", tag="python") assert len(results) == 2 def test_search_no_query_returns_all(search_engine): results = search_engine.search("") assert len(results) == 3 def test_highlight_matches(search_engine): text = "This is a hello world example" highlighted = search_engine.highlight_matches(text, "hello world") assert "**" in highlighted def test_parse_query(search_engine): parsed = search_engine.parse_query("hello AND world") assert len(parsed["terms"]) >= 1 assert parsed["raw"] == "hello AND world" def test_suggest_completions(search_engine): suggestions = search_engine.suggest_completions("pyt") assert "python" in suggestions def test_empty_query_with_filters(search_engine): results = search_engine.search("", language="javascript") assert len(results) == 1 assert results[0]["language"] == "javascript"