Add initial test
This commit is contained in:
parent
cc3dd515a6
commit
a1136bf5cd
1 changed files with 88 additions and 2 deletions
|
|
@ -10,6 +10,7 @@ import (
|
|||
"github.com/cli/cli/v2/git"
|
||||
"github.com/cli/cli/v2/internal/config"
|
||||
"github.com/cli/cli/v2/internal/gh"
|
||||
ghmock "github.com/cli/cli/v2/internal/gh/mock"
|
||||
"github.com/cli/cli/v2/internal/prompter"
|
||||
"github.com/cli/cli/v2/internal/run"
|
||||
"github.com/cli/cli/v2/pkg/cmdutil"
|
||||
|
|
@ -950,6 +951,88 @@ func Test_createRun(t *testing.T) {
|
|||
},
|
||||
wantStdout: "https://github.com/OWNER/REPO\n",
|
||||
},
|
||||
{
|
||||
name: "interactive create from scratch with host override",
|
||||
opts: &CreateOptions{
|
||||
Interactive: true,
|
||||
Config: func() (gh.Config, error) {
|
||||
cfg := &ghmock.ConfigMock{
|
||||
AuthenticationFunc: func() gh.AuthConfig {
|
||||
authCfg := &config.AuthConfig{}
|
||||
authCfg.SetHosts([]string{"example.com"})
|
||||
authCfg.SetDefaultHost("example.com", "GH_HOST")
|
||||
return authCfg
|
||||
},
|
||||
}
|
||||
return cfg, nil
|
||||
},
|
||||
},
|
||||
tty: true,
|
||||
promptStubs: func(p *prompter.PrompterMock) {
|
||||
p.ConfirmFunc = func(message string, defaultValue bool) (bool, error) {
|
||||
switch message {
|
||||
case "Would you like to add a README file?":
|
||||
return false, nil
|
||||
case "Would you like to add a .gitignore?":
|
||||
return false, nil
|
||||
case "Would you like to add a license?":
|
||||
return false, nil
|
||||
case `This will create "REPO" as a private repository on example.com. Continue?`:
|
||||
return defaultValue, nil
|
||||
case "Clone the new repository locally?":
|
||||
return false, nil
|
||||
default:
|
||||
return false, fmt.Errorf("unexpected confirm prompt: %s", message)
|
||||
}
|
||||
}
|
||||
p.InputFunc = func(message, defaultValue string) (string, error) {
|
||||
switch message {
|
||||
case "Repository name":
|
||||
return "REPO", nil
|
||||
case "Description":
|
||||
return "my new repo", nil
|
||||
default:
|
||||
return "", fmt.Errorf("unexpected input prompt: %s", message)
|
||||
}
|
||||
}
|
||||
p.SelectFunc = func(message, defaultValue string, options []string) (int, error) {
|
||||
switch message {
|
||||
case "What would you like to do?":
|
||||
return prompter.IndexFor(options, "Create a new repository on example.com from scratch")
|
||||
case "Visibility":
|
||||
return prompter.IndexFor(options, "Private")
|
||||
case "Choose a license":
|
||||
return prompter.IndexFor(options, "GNU Lesser General Public License v3.0")
|
||||
case "Choose a .gitignore template":
|
||||
return prompter.IndexFor(options, "Go")
|
||||
default:
|
||||
return 0, fmt.Errorf("unexpected select prompt: %s", message)
|
||||
}
|
||||
}
|
||||
},
|
||||
httpStubs: func(reg *httpmock.Registry) {
|
||||
reg.Register(
|
||||
httpmock.GraphQL(`query UserCurrent\b`),
|
||||
httpmock.StringResponse(`{"data":{"viewer":{"login":"someuser","organizations":{"nodes": []}}}}`))
|
||||
reg.Register(
|
||||
httpmock.GraphQL(`mutation RepositoryCreate\b`),
|
||||
httpmock.StringResponse(`
|
||||
{
|
||||
"data": {
|
||||
"createRepository": {
|
||||
"repository": {
|
||||
"id": "REPOID",
|
||||
"name": "REPO",
|
||||
"owner": {"login":"OWNER"},
|
||||
"url": "https://example.com/OWNER/REPO"
|
||||
}
|
||||
}
|
||||
}
|
||||
}`),
|
||||
)
|
||||
},
|
||||
wantStdout: "✓ Created repository OWNER/REPO on example.com\n https://example.com/OWNER/REPO\n",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
prompterMock := &prompter.PrompterMock{}
|
||||
|
|
@ -965,8 +1048,11 @@ func Test_createRun(t *testing.T) {
|
|||
tt.opts.HttpClient = func() (*http.Client, error) {
|
||||
return &http.Client{Transport: reg}, nil
|
||||
}
|
||||
tt.opts.Config = func() (gh.Config, error) {
|
||||
return config.NewBlankConfig(), nil
|
||||
|
||||
if tt.opts.Config == nil {
|
||||
tt.opts.Config = func() (gh.Config, error) {
|
||||
return config.NewBlankConfig(), nil
|
||||
}
|
||||
}
|
||||
|
||||
tt.opts.GitClient = &git.Client{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue