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)) } }