yao/agent/search/registry_test.go
Max fc9e00c917 Enhance Search API with Parallel Search Methods
- Refactored the SearchAPI interface to replace the Parallel method with All, Any, and Race methods, inspired by JavaScript Promise patterns.
- Updated the Searcher struct to implement these new parallel search methods, improving flexibility and performance in executing multiple searches.
- Revised the JSAPI implementation to support the new parallel search methods, ensuring consistency across the API.
- Enhanced documentation in DESIGN.md to detail the new parallel search functionalities and provide usage examples, clarifying their behavior and expected outcomes.
2025-12-13 15:35:52 +08:00

77 lines
1.7 KiB
Go

package search
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/yaoapp/yao/agent/search/handlers/db"
"github.com/yaoapp/yao/agent/search/handlers/kb"
"github.com/yaoapp/yao/agent/search/handlers/web"
"github.com/yaoapp/yao/agent/search/types"
)
func TestNewRegistry(t *testing.T) {
r := NewRegistry()
assert.NotNil(t, r)
assert.NotNil(t, r.handlers)
assert.Equal(t, 0, len(r.handlers))
}
func TestRegistry_Register(t *testing.T) {
r := NewRegistry()
// Register web handler
webHandler := web.NewHandler("builtin", nil)
r.Register(webHandler)
h, ok := r.Get(types.SearchTypeWeb)
assert.True(t, ok)
assert.Equal(t, types.SearchTypeWeb, h.Type())
}
func TestRegistry_RegisterMultiple(t *testing.T) {
r := NewRegistry()
// Register all handlers
r.Register(web.NewHandler("builtin", nil))
r.Register(kb.NewHandler(nil))
r.Register(db.NewHandler("builtin", nil))
// Verify all are registered
webH, ok := r.Get(types.SearchTypeWeb)
assert.True(t, ok)
assert.Equal(t, types.SearchTypeWeb, webH.Type())
kbH, ok := r.Get(types.SearchTypeKB)
assert.True(t, ok)
assert.Equal(t, types.SearchTypeKB, kbH.Type())
dbH, ok := r.Get(types.SearchTypeDB)
assert.True(t, ok)
assert.Equal(t, types.SearchTypeDB, dbH.Type())
}
func TestRegistry_Get_NotFound(t *testing.T) {
r := NewRegistry()
h, ok := r.Get(types.SearchTypeWeb)
assert.False(t, ok)
assert.Nil(t, h)
}
func TestRegistry_RegisterOverwrite(t *testing.T) {
r := NewRegistry()
// Register first handler
h1 := web.NewHandler("builtin", nil)
r.Register(h1)
// Register second handler (same type)
h2 := web.NewHandler("agent", nil)
r.Register(h2)
// Should get the second handler
h, ok := r.Get(types.SearchTypeWeb)
assert.True(t, ok)
assert.NotNil(t, h)
}