github.com/justincormack/cli@v0.0.0-20201215022714-831ebeae9675/cli/command/checkpoint/list_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 "gotest.tools/v3/golden" 13 ) 14 15 func TestCheckpointListErrors(t *testing.T) { 16 testCases := []struct { 17 args []string 18 checkpointListFunc func(container string, options types.CheckpointListOptions) ([]types.Checkpoint, error) 19 expectedError string 20 }{ 21 { 22 args: []string{}, 23 expectedError: "requires exactly 1 argument", 24 }, 25 { 26 args: []string{"too", "many", "arguments"}, 27 expectedError: "requires exactly 1 argument", 28 }, 29 { 30 args: []string{"foo"}, 31 checkpointListFunc: func(container string, options types.CheckpointListOptions) ([]types.Checkpoint, error) { 32 return []types.Checkpoint{}, errors.Errorf("error getting checkpoints for container foo") 33 }, 34 expectedError: "error getting checkpoints for container foo", 35 }, 36 } 37 38 for _, tc := range testCases { 39 cli := test.NewFakeCli(&fakeClient{ 40 checkpointListFunc: tc.checkpointListFunc, 41 }) 42 cmd := newListCommand(cli) 43 cmd.SetArgs(tc.args) 44 cmd.SetOut(ioutil.Discard) 45 assert.ErrorContains(t, cmd.Execute(), tc.expectedError) 46 } 47 } 48 49 func TestCheckpointListWithOptions(t *testing.T) { 50 var containerID, checkpointDir string 51 cli := test.NewFakeCli(&fakeClient{ 52 checkpointListFunc: func(container string, options types.CheckpointListOptions) ([]types.Checkpoint, error) { 53 containerID = container 54 checkpointDir = options.CheckpointDir 55 return []types.Checkpoint{ 56 {Name: "checkpoint-foo"}, 57 }, nil 58 }, 59 }) 60 cmd := newListCommand(cli) 61 cmd.SetArgs([]string{"container-foo"}) 62 cmd.Flags().Set("checkpoint-dir", "/dir/foo") 63 assert.NilError(t, cmd.Execute()) 64 assert.Check(t, is.Equal("container-foo", containerID)) 65 assert.Check(t, is.Equal("/dir/foo", checkpointDir)) 66 golden.Assert(t, cli.OutBuffer().String(), "checkpoint-list-with-options.golden") 67 }