From eb2da16b601c37858ace926ac9963ff8a6f9f0e5 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Sun, 19 Mar 2023 19:43:34 +0800 Subject: [PATCH] feat: TestNewCmdRename for gist rename --- pkg/cmd/gist/rename/rename_test.go | 71 ++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 pkg/cmd/gist/rename/rename_test.go diff --git a/pkg/cmd/gist/rename/rename_test.go b/pkg/cmd/gist/rename/rename_test.go new file mode 100644 index 000000000..ef5121857 --- /dev/null +++ b/pkg/cmd/gist/rename/rename_test.go @@ -0,0 +1,71 @@ +package rename + +import ( + "bytes" + "testing" + + "github.com/cli/cli/v2/pkg/cmdutil" + "github.com/google/shlex" + "github.com/stretchr/testify/assert" +) + +func TestNewCmdRename(t *testing.T) { + tests := []struct { + name string + input string + output RenameOptions + errMsg string + tty bool + wantErr bool + }{ + { + name: "no flags", + input: "123", + output: RenameOptions{ + Selector: "123", + }, + }, + { + name: "no new filename", + input: "123 old.md", + output: RenameOptions{ + Selector: "123", + OldFileName: "old.md", + }, + }, + { + name: "with both old and new filename", + input: "123 old.md new.md", + output: RenameOptions{ + Selector: "123", + OldFileName: "old.md", + NewFileName: "new.md", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + f := &cmdutil.Factory{} + + argv, err := shlex.Split(tt.input) + assert.NoError(t, err) + + var gotOpts *RenameOptions + cmd := NewCmdRename(f, func(opts *RenameOptions) error { + gotOpts = opts + return nil + }) + cmd.SetArgs(argv) + cmd.SetIn(&bytes.Buffer{}) + cmd.SetOut(&bytes.Buffer{}) + cmd.SetErr(&bytes.Buffer{}) + + _, err = cmd.ExecuteC() + assert.NoError(t, err) + + assert.Equal(t, tt.wants.Selector, gotOpts.Selector) + assert.Equal(t, tt.wants.OldFileName, gotOpts.OldFileName) + assert.Equal(t, tt.wants.NewFileName, gotOpts.NewFileName) + }) + } +}