diff --git a/internal/completion/objectstorage.go b/internal/completion/objectstorage.go index ab52985b9..71ba98730 100644 --- a/internal/completion/objectstorage.go +++ b/internal/completion/objectstorage.go @@ -8,7 +8,7 @@ import ( "github.com/spf13/cobra" ) -// ObjectStorage implements argument completion for gateways, by uuid or name. +// ObjectStorage implements argument completion for managed object storages, by uuid or name. type ObjectStorage struct{} // make sure ObjectStorage implements the interface @@ -25,5 +25,5 @@ func (s ObjectStorage) CompleteArgument(ctx context.Context, svc service.AllServ vals = append(vals, objsto.UUID, objsto.Name) } - return MatchStringPrefix(vals, toComplete, true), cobra.ShellCompDirectiveNoFileComp + return MatchStringPrefix(vals, toComplete, false), cobra.ShellCompDirectiveNoFileComp } diff --git a/internal/completion/objectstorage_test.go b/internal/completion/objectstorage_test.go new file mode 100644 index 000000000..c7a71dc7b --- /dev/null +++ b/internal/completion/objectstorage_test.go @@ -0,0 +1,35 @@ +package completion_test + +import ( + "context" + "fmt" + "testing" + + "github.com/UpCloudLtd/upcloud-cli/v3/internal/completion" + smock "github.com/UpCloudLtd/upcloud-cli/v3/internal/mock" + "github.com/UpCloudLtd/upcloud-go-api/v8/upcloud" + "github.com/spf13/cobra" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +func TestObjectStorage_CompleteArgument(t *testing.T) { + mService := new(smock.Service) + mService.On("GetManagedObjectStorages", mock.Anything, mock.Anything).Return([]upcloud.ManagedObjectStorage{ + {UUID: "objsto-uuid-1", Name: "MockBucket"}, + {UUID: "objsto-uuid-2", Name: "another-bucket"}, + }, nil) + + vals, directive := completion.ObjectStorage{}.CompleteArgument(context.TODO(), mService, "MOCK") + assert.Equal(t, []string{"MockBucket"}, vals) + assert.Equal(t, cobra.ShellCompDirectiveNoFileComp, directive) +} + +func TestObjectStorage_CompleteArgumentServiceFail(t *testing.T) { + mService := new(smock.Service) + mService.On("GetManagedObjectStorages", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("MOCKFAIL")) + + vals, directive := completion.ObjectStorage{}.CompleteArgument(context.TODO(), mService, "mock") + assert.Nil(t, vals) + assert.Equal(t, cobra.ShellCompDirectiveNoFileComp, directive) +}