finish tests
This commit is contained in:
parent
6fce78e689
commit
c3cceae9ea
2 changed files with 119 additions and 9 deletions
|
|
@ -334,7 +334,7 @@ func relockLockable(httpClient *http.Client, repo ghrepo.Interface, lockable *ap
|
||||||
return false, errors.New("already locked")
|
return false, errors.New("already locked")
|
||||||
}
|
}
|
||||||
|
|
||||||
prompt := fmt.Sprintf("%s #%d already locked%s. Unlock and lock again%s?",
|
prompt := fmt.Sprintf("%s #%d already locked%s. Unlock and lock again%s?",
|
||||||
alias[opts.ParentCmd].FullName, lockable.Number, reason(lockable.ActiveLockReason), reason(opts.Reason))
|
alias[opts.ParentCmd].FullName, lockable.Number, reason(lockable.ActiveLockReason), reason(opts.Reason))
|
||||||
|
|
||||||
relocked, err := opts.Prompter.Confirm(prompt, true)
|
relocked, err := opts.Prompter.Confirm(prompt, true)
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test_NewCmdLock(t *testing.T) {
|
func Test_NewCmdLock(t *testing.T) {
|
||||||
// TODO parent name stuff?
|
|
||||||
cases := []struct {
|
cases := []struct {
|
||||||
name string
|
name string
|
||||||
args string
|
args string
|
||||||
|
|
@ -107,7 +106,6 @@ func Test_NewCmdLock(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_NewCmdUnlock(t *testing.T) {
|
func Test_NewCmdUnlock(t *testing.T) {
|
||||||
// TODO parent name stuff?
|
|
||||||
cases := []struct {
|
cases := []struct {
|
||||||
name string
|
name string
|
||||||
args string
|
args string
|
||||||
|
|
@ -228,6 +226,8 @@ func Test_runLock(t *testing.T) {
|
||||||
promptStubs: func(t *testing.T, pm *prompter.PrompterMock) {
|
promptStubs: func(t *testing.T, pm *prompter.PrompterMock) {
|
||||||
pm.SelectFunc = func(p, d string, opts []string) (int, error) {
|
pm.SelectFunc = func(p, d string, opts []string) (int, error) {
|
||||||
if p == "Lock reason?" {
|
if p == "Lock reason?" {
|
||||||
|
assert.Equal(t, []string{"None", "Off topic", "Resolved", "Spam", "Too heated"}, opts)
|
||||||
|
|
||||||
return prompter.IndexFor(opts, "Too heated")
|
return prompter.IndexFor(opts, "Too heated")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -343,12 +343,66 @@ func Test_runLock(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "relock issue tty",
|
name: "relock issue tty",
|
||||||
state: Lock,
|
state: Lock,
|
||||||
// TODO
|
opts: LockOptions{
|
||||||
|
SelectorArg: "451",
|
||||||
|
ParentCmd: "issue",
|
||||||
|
Reason: "off_topic",
|
||||||
|
},
|
||||||
|
tty: true,
|
||||||
|
httpStubs: func(t *testing.T, reg *httpmock.Registry) {
|
||||||
|
reg.Register(
|
||||||
|
httpmock.GraphQL(`query IssueByNumber\b`),
|
||||||
|
httpmock.StringResponse(`
|
||||||
|
{ "data": { "repository": { "hasIssuesEnabled": true, "issue": {
|
||||||
|
"number": 451,
|
||||||
|
"locked": true,
|
||||||
|
"title": "traverse the library",
|
||||||
|
"__typename": "Issue" }}}}`))
|
||||||
|
reg.Register(
|
||||||
|
httpmock.GraphQL(`mutation UnlockLockable\b`),
|
||||||
|
httpmock.StringResponse(`
|
||||||
|
{ "data": {
|
||||||
|
"unlockLockable": {
|
||||||
|
"unlockedRecord": {
|
||||||
|
"locked": false }}}}`))
|
||||||
|
reg.Register(
|
||||||
|
httpmock.GraphQL(`mutation LockLockable\b`),
|
||||||
|
httpmock.StringResponse(`
|
||||||
|
{ "data": {
|
||||||
|
"lockLockable": {
|
||||||
|
"lockedRecord": {
|
||||||
|
"locked": true }}}}`))
|
||||||
|
},
|
||||||
|
promptStubs: func(t *testing.T, pm *prompter.PrompterMock) {
|
||||||
|
pm.ConfirmFunc = func(p string, d bool) (bool, error) {
|
||||||
|
if p == "Issue #451 already locked. Unlock and lock again as OFF_TOPIC?" {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, prompter.NoSuchPromptErr(p)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
wantOut: "✓ Locked as OFF_TOPIC: Issue #451 (traverse the library)\n",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "relock issue nontty",
|
name: "relock issue nontty",
|
||||||
state: Lock,
|
state: Lock,
|
||||||
// TODO
|
opts: LockOptions{
|
||||||
|
SelectorArg: "451",
|
||||||
|
ParentCmd: "issue",
|
||||||
|
Reason: "off_topic",
|
||||||
|
},
|
||||||
|
httpStubs: func(t *testing.T, reg *httpmock.Registry) {
|
||||||
|
reg.Register(
|
||||||
|
httpmock.GraphQL(`query IssueByNumber\b`),
|
||||||
|
httpmock.StringResponse(`
|
||||||
|
{ "data": { "repository": { "hasIssuesEnabled": true, "issue": {
|
||||||
|
"number": 451,
|
||||||
|
"locked": true,
|
||||||
|
"title": "traverse the library",
|
||||||
|
"__typename": "Issue" }}}}`))
|
||||||
|
},
|
||||||
|
wantErr: "already locked",
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -515,12 +569,68 @@ func Test_runLock(t *testing.T) {
|
||||||
wantOut: "✓ Unlocked: Pull request #451 (traverse the library)\n",
|
wantOut: "✓ Unlocked: Pull request #451 (traverse the library)\n",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "relock pr tty",
|
name: "relock pr tty",
|
||||||
// TODO
|
state: Lock,
|
||||||
|
opts: LockOptions{
|
||||||
|
SelectorArg: "451",
|
||||||
|
ParentCmd: "pr",
|
||||||
|
Reason: "off_topic",
|
||||||
|
},
|
||||||
|
tty: true,
|
||||||
|
httpStubs: func(t *testing.T, reg *httpmock.Registry) {
|
||||||
|
reg.Register(
|
||||||
|
httpmock.GraphQL(`query IssueByNumber\b`),
|
||||||
|
httpmock.StringResponse(`
|
||||||
|
{ "data": { "repository": { "hasIssuesEnabled": true, "issue": {
|
||||||
|
"number": 451,
|
||||||
|
"locked": true,
|
||||||
|
"title": "traverse the library",
|
||||||
|
"__typename": "PullRequest" }}}}`))
|
||||||
|
reg.Register(
|
||||||
|
httpmock.GraphQL(`mutation UnlockLockable\b`),
|
||||||
|
httpmock.StringResponse(`
|
||||||
|
{ "data": {
|
||||||
|
"unlockLockable": {
|
||||||
|
"unlockedRecord": {
|
||||||
|
"locked": false }}}}`))
|
||||||
|
reg.Register(
|
||||||
|
httpmock.GraphQL(`mutation LockLockable\b`),
|
||||||
|
httpmock.StringResponse(`
|
||||||
|
{ "data": {
|
||||||
|
"lockLockable": {
|
||||||
|
"lockedRecord": {
|
||||||
|
"locked": true }}}}`))
|
||||||
|
},
|
||||||
|
promptStubs: func(t *testing.T, pm *prompter.PrompterMock) {
|
||||||
|
pm.ConfirmFunc = func(p string, d bool) (bool, error) {
|
||||||
|
if p == "Pull request #451 already locked. Unlock and lock again as OFF_TOPIC?" {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, prompter.NoSuchPromptErr(p)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
wantOut: "✓ Locked as OFF_TOPIC: Pull request #451 (traverse the library)\n",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "relock pr nontty",
|
name: "relock pr nontty",
|
||||||
// TODO
|
state: Lock,
|
||||||
|
opts: LockOptions{
|
||||||
|
SelectorArg: "451",
|
||||||
|
ParentCmd: "pr",
|
||||||
|
Reason: "off_topic",
|
||||||
|
},
|
||||||
|
httpStubs: func(t *testing.T, reg *httpmock.Registry) {
|
||||||
|
reg.Register(
|
||||||
|
httpmock.GraphQL(`query IssueByNumber\b`),
|
||||||
|
httpmock.StringResponse(`
|
||||||
|
{ "data": { "repository": { "hasIssuesEnabled": true, "issue": {
|
||||||
|
"number": 451,
|
||||||
|
"locked": true,
|
||||||
|
"title": "traverse the library",
|
||||||
|
"__typename": "PullRequest" }}}}`))
|
||||||
|
},
|
||||||
|
wantErr: "already locked",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue