Files
Devour/internal/search/engine_test.go
T
Tomas Dvorak 898a3c303f update
2026-02-24 10:33:59 +01:00

57 lines
1.3 KiB
Go

package search
import (
"context"
"encoding/json"
"os"
"path/filepath"
"testing"
"github.com/yourorg/devour/internal/config"
)
func TestEngineRebuildAndSearch(t *testing.T) {
tmp := t.TempDir()
docsDir := filepath.Join(tmp, "docs")
indexDir := filepath.Join(tmp, "index")
metaDir := filepath.Join(tmp, "metadata")
if err := os.MkdirAll(docsDir, 0o755); err != nil {
t.Fatal(err)
}
doc := map[string]any{
"id": "1",
"title": "HTTP Client",
"content": "Use net/http client with timeout",
"type": "go-doc",
"source": "go",
"url": "https://pkg.go.dev/net/http",
}
b, _ := json.Marshal(doc)
if err := os.WriteFile(filepath.Join(docsDir, "doc.json"), b, 0o644); err != nil {
t.Fatal(err)
}
cfg := config.Default()
cfg.Storage.DocsDir = docsDir
cfg.Storage.IndexDir = indexDir
cfg.Storage.MetadataDir = metaDir
e := NewEngine(cfg)
stats, err := e.Rebuild(context.Background())
if err != nil {
t.Fatalf("rebuild failed: %v", err)
}
if stats.Documents == 0 {
t.Fatal("expected documents in index")
}
results, _, err := e.Search(context.Background(), "http timeout", SearchOptions{Limit: 5})
if err != nil {
t.Fatalf("search failed: %v", err)
}
if len(results) == 0 {
t.Fatal("expected at least one search result")
}
}