github.com/cspotcode/docker-cli@v20.10.0-rc1.0.20201201121459-3faad7acc5b8+incompatible/cli/command/config/remove_test.go (about)

     1  package config
     2  
     3  import (
     4  	"io/ioutil"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/docker/cli/internal/test"
     9  	"github.com/pkg/errors"
    10  	"gotest.tools/v3/assert"
    11  	is "gotest.tools/v3/assert/cmp"
    12  )
    13  
    14  func TestConfigRemoveErrors(t *testing.T) {
    15  	testCases := []struct {
    16  		args             []string
    17  		configRemoveFunc func(string) error
    18  		expectedError    string
    19  	}{
    20  		{
    21  			args:          []string{},
    22  			expectedError: "requires at least 1 argument.",
    23  		},
    24  		{
    25  			args: []string{"foo"},
    26  			configRemoveFunc: func(name string) error {
    27  				return errors.Errorf("error removing config")
    28  			},
    29  			expectedError: "error removing config",
    30  		},
    31  	}
    32  	for _, tc := range testCases {
    33  		cmd := newConfigRemoveCommand(
    34  			test.NewFakeCli(&fakeClient{
    35  				configRemoveFunc: tc.configRemoveFunc,
    36  			}),
    37  		)
    38  		cmd.SetArgs(tc.args)
    39  		cmd.SetOut(ioutil.Discard)
    40  		assert.ErrorContains(t, cmd.Execute(), tc.expectedError)
    41  	}
    42  }
    43  
    44  func TestConfigRemoveWithName(t *testing.T) {
    45  	names := []string{"foo", "bar"}
    46  	var removedConfigs []string
    47  	cli := test.NewFakeCli(&fakeClient{
    48  		configRemoveFunc: func(name string) error {
    49  			removedConfigs = append(removedConfigs, name)
    50  			return nil
    51  		},
    52  	})
    53  	cmd := newConfigRemoveCommand(cli)
    54  	cmd.SetArgs(names)
    55  	assert.NilError(t, cmd.Execute())
    56  	assert.Check(t, is.DeepEqual(names, strings.Split(strings.TrimSpace(cli.OutBuffer().String()), "\n")))
    57  	assert.Check(t, is.DeepEqual(names, removedConfigs))
    58  }
    59  
    60  func TestConfigRemoveContinueAfterError(t *testing.T) {
    61  	names := []string{"foo", "bar"}
    62  	var removedConfigs []string
    63  
    64  	cli := test.NewFakeCli(&fakeClient{
    65  		configRemoveFunc: func(name string) error {
    66  			removedConfigs = append(removedConfigs, name)
    67  			if name == "foo" {
    68  				return errors.Errorf("error removing config: %s", name)
    69  			}
    70  			return nil
    71  		},
    72  	})
    73  
    74  	cmd := newConfigRemoveCommand(cli)
    75  	cmd.SetArgs(names)
    76  	cmd.SetOut(ioutil.Discard)
    77  	assert.Error(t, cmd.Execute(), "error removing config: foo")
    78  	assert.Check(t, is.DeepEqual(names, removedConfigs))
    79  }