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  }