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