package search
import (
"errors"
"testing"
)
func TestNewServiceUnknownDefault(t *testing.T) {
_, err := NewService("yahoo", "https://example.com")
if err == nil {
t.Fatal("expected error for unknown default provider")
}
var unk ErrUnknownProvider
if !errors.As(err, &unk) {
t.Fatalf("expected ErrUnknownProvider, got %T: %v", err, err)
}
if unk.ID != "yahoo" {
t.Errorf("ID = %q", unk.ID)
}
if unk.Error() != "unknown provider: yahoo" {
t.Errorf("Error() = %q", unk.Error())
}
}
func TestServiceLookupAndProviders(t *testing.T) {
svc, err := NewService("gh", "https://example.com")
if err != nil {
t.Fatalf("NewService: %v", err)
}
if got := svc.PublicURL(); got != "https://example.com" {
t.Errorf("PublicURL = %q", got)
}
if len(svc.Providers()) != 3 {
t.Errorf("expected 3 providers")
}
if _, ok := svc.Lookup("ud"); !ok {
t.Errorf("Lookup ud should succeed")
}
if _, ok := svc.Lookup("yahoo"); ok {
t.Errorf("Lookup yahoo should fail")
}
}
func TestServiceRouteDelegates(t *testing.T) {
svc, err := NewService("gh", "https://example.com")
if err != nil {
t.Fatalf("NewService: %v", err)
}
p, q, err := svc.Route("ud foo")
if err != nil {
t.Fatalf("Route: %v", err)
}
if p.ID != "ud" || q != "foo" {
t.Errorf("got (%q, %q), want (ud, foo)", p.ID, q)
}
}