64 lines
1.6 KiB
Go
64 lines
1.6 KiB
Go
package providers
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/chenxin/hunjing/mcp/web-search/internal/models"
|
|
)
|
|
|
|
type mockProvider struct {
|
|
name models.ProviderKind
|
|
}
|
|
|
|
func (m *mockProvider) Name() models.ProviderKind { return m.name }
|
|
func (m *mockProvider) Search(ctx context.Context, s string, req *models.SearchRequest) (*models.SearchResult, error) {
|
|
return &models.SearchResult{Provider: m.name, Query: req.Query}, nil
|
|
}
|
|
func (m *mockProvider) HealthCheck(ctx context.Context) error { return nil }
|
|
func (m *mockProvider) MaxResults() int { return 10 }
|
|
|
|
func TestRegistry_RegisterAndGet(t *testing.T) {
|
|
r := NewRegistry()
|
|
m := &mockProvider{name: models.ProviderTavily}
|
|
r.Register(m)
|
|
|
|
got, ok := r.Get(models.ProviderTavily)
|
|
if !ok {
|
|
t.Fatal("expected to find provider")
|
|
}
|
|
if got.Name() != models.ProviderTavily {
|
|
t.Errorf("expected tavily, got %s", got.Name())
|
|
}
|
|
}
|
|
|
|
func TestRegistry_All(t *testing.T) {
|
|
r := NewRegistry()
|
|
r.Register(&mockProvider{name: models.ProviderTavily})
|
|
r.Register(&mockProvider{name: models.ProviderBrave})
|
|
|
|
all := r.All()
|
|
if len(all) != 2 {
|
|
t.Errorf("expected 2 providers, got %d", len(all))
|
|
}
|
|
}
|
|
|
|
func TestRegistry_GetMissing(t *testing.T) {
|
|
r := NewRegistry()
|
|
_, ok := r.Get(models.ProviderBrave)
|
|
if ok {
|
|
t.Fatal("expected missing provider")
|
|
}
|
|
}
|
|
|
|
func TestRegistry_Names(t *testing.T) {
|
|
r := NewRegistry()
|
|
r.Register(&mockProvider{name: models.ProviderTavily})
|
|
r.Register(&mockProvider{name: models.ProviderBrave})
|
|
|
|
names := r.Names()
|
|
if len(names) != 2 {
|
|
t.Errorf("expected 2 names, got %d", len(names))
|
|
}
|
|
}
|