Extend native catalog adapters
This commit is contained in:
@@ -458,25 +458,51 @@ func TestFromEngineListsNativeCatalogsWithInvocationValues(t *testing.T) {
|
||||
}
|
||||
return engine, nil
|
||||
})
|
||||
if suite.ListPrompts == nil || suite.ListProfiles == nil {
|
||||
t.Fatalf("FromEngine did not supply both catalog callbacks: %#v", suite)
|
||||
if suite.ListPrompts == nil || suite.ListProfiles == nil || suite.ListBackends == nil || suite.ListNamespaces == nil || suite.ListCollections == nil {
|
||||
t.Fatalf("FromEngine did not supply all five catalog callbacks: %#v", suite)
|
||||
}
|
||||
wantPrompts, err := engine.ListPrompts(wantContext)
|
||||
catalogRequest := CatalogRequest{Selection: wantSelection, Filter: promptkit.NamespaceFilter{Mode: promptkit.NamespaceNamed, Name: "missing"}}
|
||||
namespaceRequest := NamespaceRequest{Selection: wantSelection, Kinds: []promptkit.ResourceKind{promptkit.ResourcePrompt}}
|
||||
wantPrompts, err := engine.ListPrompts(wantContext, catalogRequest.Filter)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
wantProfiles, err := engine.ListProfiles(wantContext)
|
||||
wantProfiles, err := engine.ListProfiles(wantContext, catalogRequest.Filter)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
prompts, err := suite.ListPrompts(wantContext, wantSelection, wantInput, wantState)
|
||||
wantBackends, err := engine.ListBackends(wantContext, catalogRequest.Filter)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
wantNamespaces, err := engine.ListNamespaces(wantContext, namespaceRequest.Kinds...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
wantCollections, err := engine.ListCollections(wantContext)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
prompts, err := suite.ListPrompts(wantContext, catalogRequest, wantInput, wantState)
|
||||
if err != nil || !reflect.DeepEqual(prompts.Value, wantPrompts) || len(prompts.Diagnostics) != 0 || loaderCalls != 1 {
|
||||
t.Fatalf("prompt catalog = (%#v, %v), calls=%d, want %#v", prompts, err, loaderCalls, wantPrompts)
|
||||
}
|
||||
profiles, err := suite.ListProfiles(wantContext, wantSelection, wantInput, wantState)
|
||||
profiles, err := suite.ListProfiles(wantContext, catalogRequest, wantInput, wantState)
|
||||
if err != nil || !reflect.DeepEqual(profiles.Value, wantProfiles) || len(profiles.Diagnostics) != 0 || loaderCalls != 2 {
|
||||
t.Fatalf("profile catalog = (%#v, %v), calls=%d, want %#v", profiles, err, loaderCalls, wantProfiles)
|
||||
}
|
||||
backends, err := suite.ListBackends(wantContext, catalogRequest, wantInput, wantState)
|
||||
if err != nil || !reflect.DeepEqual(backends.Value, wantBackends) || len(backends.Diagnostics) != 0 || loaderCalls != 3 {
|
||||
t.Fatalf("backend catalog = (%#v, %v), calls=%d, want %#v", backends, err, loaderCalls, wantBackends)
|
||||
}
|
||||
namespaces, err := suite.ListNamespaces(wantContext, namespaceRequest, wantInput, wantState)
|
||||
if err != nil || !reflect.DeepEqual(namespaces.Value, wantNamespaces) || len(namespaces.Diagnostics) != 0 || loaderCalls != 4 {
|
||||
t.Fatalf("namespace catalog = (%#v, %v), calls=%d, want %#v", namespaces, err, loaderCalls, wantNamespaces)
|
||||
}
|
||||
collections, err := suite.ListCollections(wantContext, wantSelection, wantInput, wantState)
|
||||
if err != nil || !reflect.DeepEqual(collections.Value, wantCollections) || len(collections.Diagnostics) != 0 || loaderCalls != 5 {
|
||||
t.Fatalf("collection catalog = (%#v, %v), calls=%d, want %#v", collections, err, loaderCalls, wantCollections)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFromEngineCatalogsRetainLoadDiagnosticsAndErrorIdentity(t *testing.T) {
|
||||
@@ -492,7 +518,7 @@ func TestFromEngineCatalogsRetainLoadDiagnosticsAndErrorIdentity(t *testing.T) {
|
||||
call func() (int, error)
|
||||
}{
|
||||
{name: "prompts", call: func() (int, error) {
|
||||
acquired, err := suite.ListPrompts(context.Background(), ckconfig.Selection{}, 0, 0)
|
||||
acquired, err := suite.ListPrompts(context.Background(), CatalogRequest{}, 0, 0)
|
||||
var retained *configkit.LoadError
|
||||
if !errors.As(err, &retained) || retained != loadErr || len(acquired.Diagnostics) == 0 {
|
||||
t.Errorf("prompt load failure = (%#v, %v)", acquired, err)
|
||||
@@ -500,13 +526,37 @@ func TestFromEngineCatalogsRetainLoadDiagnosticsAndErrorIdentity(t *testing.T) {
|
||||
return len(acquired.Diagnostics), err
|
||||
}},
|
||||
{name: "profiles", call: func() (int, error) {
|
||||
acquired, err := suite.ListProfiles(context.Background(), ckconfig.Selection{}, 0, 0)
|
||||
acquired, err := suite.ListProfiles(context.Background(), CatalogRequest{}, 0, 0)
|
||||
var retained *configkit.LoadError
|
||||
if !errors.As(err, &retained) || retained != loadErr || len(acquired.Diagnostics) == 0 {
|
||||
t.Errorf("profile load failure = (%#v, %v)", acquired, err)
|
||||
}
|
||||
return len(acquired.Diagnostics), err
|
||||
}},
|
||||
{name: "backends", call: func() (int, error) {
|
||||
acquired, err := suite.ListBackends(context.Background(), CatalogRequest{}, 0, 0)
|
||||
var retained *configkit.LoadError
|
||||
if !errors.As(err, &retained) || retained != loadErr || len(acquired.Diagnostics) == 0 {
|
||||
t.Errorf("backend load failure = (%#v, %v)", acquired, err)
|
||||
}
|
||||
return len(acquired.Diagnostics), err
|
||||
}},
|
||||
{name: "namespaces", call: func() (int, error) {
|
||||
acquired, err := suite.ListNamespaces(context.Background(), NamespaceRequest{}, 0, 0)
|
||||
var retained *configkit.LoadError
|
||||
if !errors.As(err, &retained) || retained != loadErr || len(acquired.Diagnostics) == 0 {
|
||||
t.Errorf("namespace load failure = (%#v, %v)", acquired, err)
|
||||
}
|
||||
return len(acquired.Diagnostics), err
|
||||
}},
|
||||
{name: "collections", call: func() (int, error) {
|
||||
acquired, err := suite.ListCollections(context.Background(), ckconfig.Selection{}, 0, 0)
|
||||
var retained *configkit.LoadError
|
||||
if !errors.As(err, &retained) || retained != loadErr || len(acquired.Diagnostics) == 0 {
|
||||
t.Errorf("collection load failure = (%#v, %v)", acquired, err)
|
||||
}
|
||||
return len(acquired.Diagnostics), err
|
||||
}},
|
||||
} {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
diagnosticCount, err := test.call()
|
||||
@@ -525,11 +575,23 @@ func TestFromEngineCatalogsHonorCancellationAfterLoad(t *testing.T) {
|
||||
call func(Suite[int, int], context.Context) error
|
||||
}{
|
||||
{name: "prompts", call: func(suite Suite[int, int], ctx context.Context) error {
|
||||
_, err := suite.ListPrompts(ctx, ckconfig.Selection{}, 0, 0)
|
||||
_, err := suite.ListPrompts(ctx, CatalogRequest{}, 0, 0)
|
||||
return err
|
||||
}},
|
||||
{name: "profiles", call: func(suite Suite[int, int], ctx context.Context) error {
|
||||
_, err := suite.ListProfiles(ctx, ckconfig.Selection{}, 0, 0)
|
||||
_, err := suite.ListProfiles(ctx, CatalogRequest{}, 0, 0)
|
||||
return err
|
||||
}},
|
||||
{name: "backends", call: func(suite Suite[int, int], ctx context.Context) error {
|
||||
_, err := suite.ListBackends(ctx, CatalogRequest{}, 0, 0)
|
||||
return err
|
||||
}},
|
||||
{name: "namespaces", call: func(suite Suite[int, int], ctx context.Context) error {
|
||||
_, err := suite.ListNamespaces(ctx, NamespaceRequest{}, 0, 0)
|
||||
return err
|
||||
}},
|
||||
{name: "collections", call: func(suite Suite[int, int], ctx context.Context) error {
|
||||
_, err := suite.ListCollections(ctx, ckconfig.Selection{}, 0, 0)
|
||||
return err
|
||||
}},
|
||||
} {
|
||||
@@ -545,7 +607,7 @@ func TestFromEngineCatalogsHonorCancellationAfterLoad(t *testing.T) {
|
||||
}
|
||||
})
|
||||
}
|
||||
if loaderCalls != 2 {
|
||||
if loaderCalls != 5 {
|
||||
t.Fatalf("catalog loaders called = %d, want one per provider", loaderCalls)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user