github.com/ungtb10d/cli/v2@v2.0.0-20221110210412-98537dd9d6a1/pkg/cmd/alias/delete/delete_test.go (about) 1 package delete 2 3 import ( 4 "bytes" 5 "io" 6 "testing" 7 8 "github.com/MakeNowJust/heredoc" 9 "github.com/ungtb10d/cli/v2/internal/config" 10 "github.com/ungtb10d/cli/v2/pkg/cmdutil" 11 "github.com/ungtb10d/cli/v2/pkg/iostreams" 12 "github.com/google/shlex" 13 "github.com/stretchr/testify/assert" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func TestAliasDelete(t *testing.T) { 18 _ = config.StubWriteConfig(t) 19 20 tests := []struct { 21 name string 22 config string 23 cli string 24 isTTY bool 25 wantStdout string 26 wantStderr string 27 wantErr string 28 }{ 29 { 30 name: "no aliases", 31 config: "", 32 cli: "co", 33 isTTY: true, 34 wantStdout: "", 35 wantStderr: "", 36 wantErr: "no such alias co", 37 }, 38 { 39 name: "delete one", 40 config: heredoc.Doc(` 41 aliases: 42 il: issue list 43 co: pr checkout 44 `), 45 cli: "co", 46 isTTY: true, 47 wantStdout: "", 48 wantStderr: "✓ Deleted alias co; was pr checkout\n", 49 }, 50 } 51 for _, tt := range tests { 52 t.Run(tt.name, func(t *testing.T) { 53 cfg := config.NewFromString(tt.config) 54 55 ios, _, stdout, stderr := iostreams.Test() 56 ios.SetStdoutTTY(tt.isTTY) 57 ios.SetStdinTTY(tt.isTTY) 58 ios.SetStderrTTY(tt.isTTY) 59 60 factory := &cmdutil.Factory{ 61 IOStreams: ios, 62 Config: func() (config.Config, error) { 63 return cfg, nil 64 }, 65 } 66 67 cmd := NewCmdDelete(factory, nil) 68 69 argv, err := shlex.Split(tt.cli) 70 require.NoError(t, err) 71 cmd.SetArgs(argv) 72 73 cmd.SetIn(&bytes.Buffer{}) 74 cmd.SetOut(io.Discard) 75 cmd.SetErr(io.Discard) 76 77 _, err = cmd.ExecuteC() 78 if tt.wantErr != "" { 79 assert.EqualError(t, err, tt.wantErr) 80 return 81 } 82 require.NoError(t, err) 83 84 assert.Equal(t, tt.wantStdout, stdout.String()) 85 assert.Equal(t, tt.wantStderr, stderr.String()) 86 }) 87 } 88 }