X Tutup
Skip to content

Commit 4960935

Browse files
authored
Merge pull request cli#3737 from cli/requested-reviewers-slug
Fix how teams are displayed in requested reviewers
2 parents e65d956 + 1a980e7 commit 4960935

File tree

5 files changed

+42
-30
lines changed

5 files changed

+42
-30
lines changed

api/export_pr.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,20 @@ func (pr *PullRequest) ExportData(fields []string) *map[string]interface{} {
8080
case "reviewRequests":
8181
requests := make([]interface{}, 0, len(pr.ReviewRequests.Nodes))
8282
for _, req := range pr.ReviewRequests.Nodes {
83-
if req.RequestedReviewer.TypeName == "" {
84-
continue
83+
r := req.RequestedReviewer
84+
switch r.TypeName {
85+
case "User":
86+
requests = append(requests, map[string]string{
87+
"__typename": r.TypeName,
88+
"login": r.Login,
89+
})
90+
case "Team":
91+
requests = append(requests, map[string]string{
92+
"__typename": r.TypeName,
93+
"name": r.Name,
94+
"slug": r.LoginOrSlug(),
95+
})
8596
}
86-
requests = append(requests, req.RequestedReviewer)
8797
}
8898
data[f] = &requests
8999
default:

api/queries_pr.go

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -150,28 +150,33 @@ type PullRequestFile struct {
150150

151151
type ReviewRequests struct {
152152
Nodes []struct {
153-
RequestedReviewer struct {
154-
TypeName string `json:"__typename"`
155-
Login string `json:"login"`
156-
Name string `json:"name"`
157-
Slug string `json:"slug"`
158-
Organization struct {
159-
Login string `json:"login"`
160-
}
161-
}
153+
RequestedReviewer RequestedReviewer
154+
}
155+
}
156+
157+
type RequestedReviewer struct {
158+
TypeName string `json:"__typename"`
159+
Login string `json:"login"`
160+
Name string `json:"name"`
161+
Slug string `json:"slug"`
162+
Organization struct {
163+
Login string `json:"login"`
164+
} `json:"organization"`
165+
}
166+
167+
func (r RequestedReviewer) LoginOrSlug() string {
168+
if r.TypeName == teamTypeName {
169+
return fmt.Sprintf("%s/%s", r.Organization.Login, r.Slug)
162170
}
171+
return r.Login
163172
}
164173

165174
const teamTypeName = "Team"
166175

167176
func (r ReviewRequests) Logins() []string {
168177
logins := make([]string, len(r.Nodes))
169-
for i, a := range r.Nodes {
170-
if a.RequestedReviewer.TypeName == teamTypeName {
171-
logins[i] = fmt.Sprintf("%s/%s", a.RequestedReviewer.Organization.Login, a.RequestedReviewer.Slug)
172-
} else {
173-
logins[i] = a.RequestedReviewer.Login
174-
}
178+
for i, r := range r.Nodes {
179+
logins[i] = r.RequestedReviewer.LoginOrSlug()
175180
}
176181
return logins
177182
}

pkg/cmd/pr/view/fixtures/prViewPreviewWithReviewersByNumber.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@
2121
}
2222
},
2323
{
24-
"requestedReviewer": {
25-
"__typename": "Team",
26-
"name": "Team 1"
27-
}
24+
"requestedReviewer": {
25+
"__typename": "Team",
26+
"name": "Team 1",
27+
"slug": "team-1",
28+
"organization": {"login": "my-org"}
29+
}
2830
},
2931
{
3032
"requestedReviewer": {

pkg/cmd/pr/view/view.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,6 @@ func prReviewerList(pr api.PullRequest, cs *iostreams.ColorScheme) string {
294294
return reviewerList
295295
}
296296

297-
const teamTypeName = "Team"
298-
299297
const ghostName = "ghost"
300298

301299
// parseReviewers parses given Reviews and ReviewRequests
@@ -317,10 +315,7 @@ func parseReviewers(pr api.PullRequest) []*reviewerState {
317315

318316
// Overwrite reviewer's state if a review request for the same reviewer exists.
319317
for _, reviewRequest := range pr.ReviewRequests.Nodes {
320-
name := reviewRequest.RequestedReviewer.Login
321-
if reviewRequest.RequestedReviewer.TypeName == teamTypeName {
322-
name = reviewRequest.RequestedReviewer.Name
323-
}
318+
name := reviewRequest.RequestedReviewer.LoginOrSlug()
324319
reviewerStates[name] = &reviewerState{
325320
Name: name,
326321
State: requestedReviewState,

pkg/cmd/pr/view/view_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ func TestPRView_Preview_nontty(t *testing.T) {
250250
`milestone:\t\n`,
251251
`additions:\t100\n`,
252252
`deletions:\t10\n`,
253-
`reviewers:\tDEF \(Commented\), def \(Changes requested\), ghost \(Approved\), hubot \(Commented\), xyz \(Approved\), 123 \(Requested\), Team 1 \(Requested\), abc \(Requested\)\n`,
253+
`reviewers:\tDEF \(Commented\), def \(Changes requested\), ghost \(Approved\), hubot \(Commented\), xyz \(Approved\), 123 \(Requested\), abc \(Requested\), my-org\/team-1 \(Requested\)\n`,
254254
`\*\*blueberries taste good\*\*`,
255255
},
256256
},
@@ -383,7 +383,7 @@ func TestPRView_Preview(t *testing.T) {
383383
},
384384
expectedOutputs: []string{
385385
`Blueberries are from a fork`,
386-
`Reviewers:.*DEF \(.*Commented.*\), def \(.*Changes requested.*\), ghost \(.*Approved.*\), hubot \(Commented\), xyz \(.*Approved.*\), 123 \(.*Requested.*\), Team 1 \(.*Requested.*\), abc \(.*Requested.*\)\n`,
386+
`Reviewers: DEF \(Commented\), def \(Changes requested\), ghost \(Approved\), hubot \(Commented\), xyz \(Approved\), 123 \(Requested\), abc \(Requested\), my-org\/team-1 \(Requested\)`,
387387
`blueberries taste good`,
388388
`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12`,
389389
},

0 commit comments

Comments
 (0)
X Tutup