github.com/secman-team/gh-api@v1.8.2/pkg/cmd/alias/delete/delete_test.go (about) 1 package delete 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "testing" 7 8 "github.com/MakeNowJust/heredoc" 9 "github.com/secman-team/gh-api/core/config" 10 "github.com/secman-team/gh-api/pkg/cmdutil" 11 "github.com/secman-team/gh-api/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 tests := []struct { 19 name string 20 config string 21 cli string 22 isTTY bool 23 wantStdout string 24 wantStderr string 25 wantErr string 26 }{ 27 { 28 name: "no aliases", 29 config: "", 30 cli: "co", 31 isTTY: true, 32 wantStdout: "", 33 wantStderr: "", 34 wantErr: "no such alias co", 35 }, 36 { 37 name: "delete one", 38 config: heredoc.Doc(` 39 aliases: 40 il: issue list 41 co: pr checkout 42 `), 43 cli: "co", 44 isTTY: true, 45 wantStdout: "", 46 wantStderr: "✓ Deleted alias co; was pr checkout\n", 47 }, 48 } 49 for _, tt := range tests { 50 t.Run(tt.name, func(t *testing.T) { 51 defer config.StubWriteConfig(ioutil.Discard, ioutil.Discard)() 52 53 cfg := config.NewFromString(tt.config) 54 55 io, _, stdout, stderr := iostreams.Test() 56 io.SetStdoutTTY(tt.isTTY) 57 io.SetStdinTTY(tt.isTTY) 58 io.SetStderrTTY(tt.isTTY) 59 60 factory := &cmdutil.Factory{ 61 IOStreams: io, 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(ioutil.Discard) 75 cmd.SetErr(ioutil.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 }