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  }