github.com/justincormack/cli@v0.0.0-20201215022714-831ebeae9675/cli/command/checkpoint/remove_test.go (about)

     1  package checkpoint
     2  
     3  import (
     4  	"io/ioutil"
     5  	"testing"
     6  
     7  	"github.com/docker/cli/internal/test"
     8  	"github.com/docker/docker/api/types"
     9  	"github.com/pkg/errors"
    10  	"gotest.tools/v3/assert"
    11  	is "gotest.tools/v3/assert/cmp"
    12  )
    13  
    14  func TestCheckpointRemoveErrors(t *testing.T) {
    15  	testCases := []struct {
    16  		args                 []string
    17  		checkpointDeleteFunc func(container string, options types.CheckpointDeleteOptions) error
    18  		expectedError        string
    19  	}{
    20  		{
    21  			args:          []string{"too-few-arguments"},
    22  			expectedError: "requires exactly 2 arguments",
    23  		},
    24  		{
    25  			args:          []string{"too", "many", "arguments"},
    26  			expectedError: "requires exactly 2 arguments",
    27  		},
    28  		{
    29  			args: []string{"foo", "bar"},
    30  			checkpointDeleteFunc: func(container string, options types.CheckpointDeleteOptions) error {
    31  				return errors.Errorf("error deleting checkpoint")
    32  			},
    33  			expectedError: "error deleting checkpoint",
    34  		},
    35  	}
    36  
    37  	for _, tc := range testCases {
    38  		cli := test.NewFakeCli(&fakeClient{
    39  			checkpointDeleteFunc: tc.checkpointDeleteFunc,
    40  		})
    41  		cmd := newRemoveCommand(cli)
    42  		cmd.SetArgs(tc.args)
    43  		cmd.SetOut(ioutil.Discard)
    44  		assert.ErrorContains(t, cmd.Execute(), tc.expectedError)
    45  	}
    46  }
    47  
    48  func TestCheckpointRemoveWithOptions(t *testing.T) {
    49  	var containerID, checkpointID, checkpointDir string
    50  	cli := test.NewFakeCli(&fakeClient{
    51  		checkpointDeleteFunc: func(container string, options types.CheckpointDeleteOptions) error {
    52  			containerID = container
    53  			checkpointID = options.CheckpointID
    54  			checkpointDir = options.CheckpointDir
    55  			return nil
    56  		},
    57  	})
    58  	cmd := newRemoveCommand(cli)
    59  	cmd.SetArgs([]string{"container-foo", "checkpoint-bar"})
    60  	cmd.Flags().Set("checkpoint-dir", "/dir/foo")
    61  	assert.NilError(t, cmd.Execute())
    62  	assert.Check(t, is.Equal("container-foo", containerID))
    63  	assert.Check(t, is.Equal("checkpoint-bar", checkpointID))
    64  	assert.Check(t, is.Equal("/dir/foo", checkpointDir))
    65  }