diff --git a/pkg/cmd/browse/browse_test.go b/pkg/cmd/browse/browse_test.go index f4bf7cb42..808e8efe1 100644 --- a/pkg/cmd/browse/browse_test.go +++ b/pkg/cmd/browse/browse_test.go @@ -16,101 +16,147 @@ import ( ) func TestNewCmdBrowse(t *testing.T) { - // TODO test the use of the api using "gh browse" - // instead of opening multiple browsers for each test, - // we can test the http code sent back after calling a site -} - -func runCommand(isTTY bool, cli string) (*test.CmdOut, error) { - io, _, stdout, stderr := iostreams.Test() - io.SetStdoutTTY(isTTY) - io.SetStdinTTY(isTTY) - io.SetStderrTTY(isTTY) - - factory := &cmdutil.Factory{ - IOStreams: io, - HttpClient: func() (*http.Client, error) { - return &http.Client{Transport: rt}, nil - }, - Config: func() (config.Config, error) { - return config.NewBlankConfig(), nil - }, - BaseRepo: func() (ghrepo.Interface, error) { - return ghrepo.New("OWNER", "REPO"), nil - }, - } - - cmd := NewCmdBrowse(factory) - - argv, err := shlex.Split(cli) - if err != nil { - return nil, err - } - cmd.SetArgs(argv) - - cmd.SetIn(&bytes.Buffer{}) - cmd.SetOut(ioutil.Discard) - cmd.SetErr(ioutil.Discard) - - _, err = cmd.ExecuteC() - return &test.CmdOut{ - OutBuf: stdout, - ErrBuf: stderr, - }, err -} - -func TestBrowseOpen(t *testing.T) { - runCommand(true, "") -} - -func Test_browseList(t *testing.T) { type args struct { repo ghrepo.Interface cli string } tests := []struct { - name string - args args - urlExpected string - exitExpected exitCode - }{} - for _, test := range tests { + name string + args args + errorExpected error + stdoutExpected string + stderrExpected string + }{ + name: "test1", + arg : args{ + repo: ghrepo.New("bchadwic","cli"), + cli: "--settings", + }, + errorExpected: nil, + stdoutExpected: "now opening https://github.com/bchadwic/cli/settings in browser . . .\n", + stderrExpected: "", + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _, _, stdout, stderr := iostreams.Test() + // tt.topic + + factory := &cmdutil.Factory{ + IOStreams: io, + //os.Getenv("BROWSER") + Browser: cmdutil.NewBrowser("", stdout, stderr), + HttpClient: func() (*http.Client, error) { + return &http.Client{Transport: rt}, nil + }, + BaseRepo: tt.args.repo, + }, + } + cmd := NewCmdBrowse(factory) + + argv, err := shlex.Split(cli) + if err != nil { + return + } + cmd.SetArgs(argv) + cmd.SetOut(stdout) + cmd.SetErr(stderr) + + _, err := cmd.ExecuteC() + assert.Error(t, err) + if stdoutExpected != "" { + assert.Contains(t, stdout.String(), tt.outputExpected) // success outputs + } + if stderrExpected != "" { + assert.Contains(t, stderr.String(), tt.outputExpected) // error outputs + } + }) } } -func createCommand(repo ghrepo.Interface, cli string) *cobra.Command { - io, _, stdout, stderr := iostreams.Test() - io.SetStdoutTTY(false) - io.SetStdinTTY(false) // Ask the team about TTY - io.SetStderrTTY(false) - factory := &cmdutil.Factory{ - IOStreams: io, - Config: func() (config.Config, error) { - return config.NewBlankConfig(), nil - }, - BaseRepo: func() (ghrepo.Interface, error) { - return ghrepo.New("OWNER", "REPO"), nil - }, - } - cmd := NewCmdView(factory, nil) +// func runCommand(isTTY bool, cli string) (*test.CmdOut, error) { +// io, _, stdout, stderr := iostreams.Test() +// io.SetStdoutTTY(isTTY) +// io.SetStdinTTY(isTTY) +// io.SetStderrTTY(isTTY) - argv, err := shlex.Split(cli) - if err != nil { - return nil, err - } - cmd.SetArgs(argv) +// factory := &cmdutil.Factory{ +// IOStreams: io, +// HttpClient: func() (*http.Client, error) { +// return &http.Client{Transport: rt}, nil +// }, +// Config: func() (config.Config, error) { +// return config.NewBlankConfig(), nil +// }, +// BaseRepo: func() (ghrepo.Interface, error) { +// return ghrepo.New("OWNER", "REPO"), nil +// }, +// } - cmd.SetIn(&bytes.Buffer{}) - cmd.SetOut(ioutil.Discard) - cmd.SetErr(ioutil.Discard) +// cmd := NewCmdBrowse(factory) - _, err = cmd.ExecuteC() - return &test.CmdOut{ - OutBuf: stdout, - ErrBuf: stderr, - }, err -} +// argv, err := shlex.Split(cli) +// if err != nil { +// return nil, err +// } +// cmd.SetArgs(argv) + +// cmd.SetIn(&bytes.Buffer{}) +// cmd.SetOut(ioutil.Discard) +// cmd.SetErr(ioutil.Discard) + +// _, err = cmd.ExecuteC() +// return &test.CmdOut{ +// OutBuf: stdout, +// ErrBuf: stderr, +// }, err +// } + +// func TestBrowseOpen(t *testing.T) { +// runCommand(true, "") +// } + +// func Test_browseList(t *testing.T) { +// for _, test := range tests { +// arg = test.args +// cmd := createCommand(arg.repo, arg.cli) +// err := cmd.RunE(); +// } +// } + +// func createCommand(repo ghrepo.Interface, cli string) *cobra.Command { +// io, _, stdout, stderr := iostreams.Test() +// io.SetStdoutTTY(false) +// io.SetStdinTTY(false) // Ask the team about TTY +// io.SetStderrTTY(false) + +// factory := &cmdutil.Factory{ +// IOStreams: io, +// Config: func() (config.Config, error) { +// return config.NewBlankConfig(), nil +// }, +// BaseRepo: repo +// }, +// } + +// cmd := NewCmdBrowse(factory, nil) + +// argv, err := shlex.Split(cli) +// if err != nil { +// return nil, err +// } +// cmd.SetArgs(argv) + +// cmd.SetIn(&bytes.Buffer{}) +// cmd.SetOut(ioutil.Discard) +// cmd.SetErr(ioutil.Discard) + +// _, err = cmd.RunE() +// return &test.CmdOut{ +// OutBuf: stdout, +// ErrBuf: stderr, +// }, err +// }