Test interactive issue-type prompt in createRun
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
85ee04d0fd
commit
e9f102e8be
1 changed files with 58 additions and 0 deletions
|
|
@ -729,6 +729,64 @@ func Test_createRun(t *testing.T) {
|
|||
wantsStdout: "https://github.com/OWNER/REPO/issues/123\n",
|
||||
wantsStderr: "\nCreating issue in OWNER/REPO\n\n",
|
||||
},
|
||||
{
|
||||
name: "interactive prompts for type",
|
||||
opts: CreateOptions{
|
||||
Interactive: true,
|
||||
Detector: &fd.EnabledDetectorMock{},
|
||||
Title: "feature request",
|
||||
Body: "would be nice to have",
|
||||
},
|
||||
promptStubs: func(pm *prompter.PrompterMock) {
|
||||
pm.SelectFunc = func(message, defaultValue string, options []string) (int, error) {
|
||||
switch message {
|
||||
case "Issue type":
|
||||
return prompter.IndexFor(options, "Feature")
|
||||
case "What's next?":
|
||||
return prompter.IndexFor(options, "Submit")
|
||||
default:
|
||||
return 0, fmt.Errorf("unexpected select prompt: %s", message)
|
||||
}
|
||||
}
|
||||
},
|
||||
httpStubs: func(t *testing.T, r *httpmock.Registry) {
|
||||
r.Register(
|
||||
httpmock.GraphQL(`query IssueRepositoryInfo\b`),
|
||||
httpmock.StringResponse(`
|
||||
{ "data": { "repository": {
|
||||
"id": "REPOID",
|
||||
"hasIssuesEnabled": true,
|
||||
"viewerPermission": "WRITE"
|
||||
} } }`))
|
||||
// Issue types are fetched up front to power the interactive prompt.
|
||||
r.Register(
|
||||
httpmock.GraphQL(`query RepositoryIssueTypes\b`),
|
||||
httpmock.StringResponse(`
|
||||
{ "data": { "repository": { "issueTypes": { "nodes": [
|
||||
{ "id": "IT_1", "name": "Bug", "description": "", "color": "d73a4a" },
|
||||
{ "id": "IT_2", "name": "Feature", "description": "", "color": "0075ca" },
|
||||
{ "id": "IT_3", "name": "Task", "description": "", "color": "e4e669" }
|
||||
] } } } }`))
|
||||
r.Register(
|
||||
httpmock.GraphQL(`mutation IssueCreate\b`),
|
||||
httpmock.StringResponse(`
|
||||
{ "data": { "createIssue": { "issue": {
|
||||
"id": "ISSUE_ID_123",
|
||||
"URL": "https://github.com/OWNER/REPO/issues/123"
|
||||
} } } }`))
|
||||
// Selected ID is reused without re-fetching the types list.
|
||||
r.Register(
|
||||
httpmock.GraphQL(`mutation UpdateIssueIssueType\b`),
|
||||
httpmock.GraphQLMutation(`
|
||||
{ "data": { "updateIssueIssueType": { "issue": { "id": "ISSUE_ID_123" } } } }`,
|
||||
func(inputs map[string]interface{}) {
|
||||
assert.Equal(t, "ISSUE_ID_123", inputs["issueId"])
|
||||
assert.Equal(t, "IT_2", inputs["issueTypeId"])
|
||||
}))
|
||||
},
|
||||
wantsStdout: "https://github.com/OWNER/REPO/issues/123\n",
|
||||
wantsStderr: "\nCreating issue in OWNER/REPO\n\n",
|
||||
},
|
||||
{
|
||||
name: "create with type not found",
|
||||
opts: CreateOptions{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue