fix pr review requests for teams
This commit is contained in:
parent
55b183f3c9
commit
a612f06dee
3 changed files with 105 additions and 5 deletions
|
|
@ -151,17 +151,27 @@ type PullRequestFile struct {
|
|||
type ReviewRequests struct {
|
||||
Nodes []struct {
|
||||
RequestedReviewer struct {
|
||||
TypeName string `json:"__typename"`
|
||||
Login string `json:"login"`
|
||||
Name string `json:"name"`
|
||||
TypeName string `json:"__typename"`
|
||||
Login string `json:"login"`
|
||||
Name string `json:"name"`
|
||||
Slug string `json:"slug"`
|
||||
Organization struct {
|
||||
Login string `json:"login"`
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const teamTypeName = "Team"
|
||||
|
||||
func (r ReviewRequests) Logins() []string {
|
||||
logins := make([]string, len(r.Nodes))
|
||||
for i, a := range r.Nodes {
|
||||
logins[i] = a.RequestedReviewer.Login
|
||||
if a.RequestedReviewer.TypeName == teamTypeName {
|
||||
logins[i] = a.RequestedReviewer.Organization.Login + "/" + a.RequestedReviewer.Slug
|
||||
} else {
|
||||
logins[i] = a.RequestedReviewer.Login
|
||||
}
|
||||
}
|
||||
return logins
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
|
|
@ -158,3 +159,88 @@ func Test_determinePullRequestFeatures(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_Logins(t *testing.T) {
|
||||
rr := ReviewRequests{}
|
||||
var tests = []struct {
|
||||
name string
|
||||
requestedReviews string
|
||||
want []string
|
||||
}{
|
||||
{
|
||||
name: "no requested reviewers",
|
||||
requestedReviews: `{"nodes": []}`,
|
||||
want: []string{},
|
||||
},
|
||||
{
|
||||
name: "user",
|
||||
requestedReviews: `{"nodes": [
|
||||
{
|
||||
"requestedreviewer": {
|
||||
"__typename": "User", "login": "testuser"
|
||||
}
|
||||
}
|
||||
]}`,
|
||||
want: []string{"testuser"},
|
||||
},
|
||||
{
|
||||
name: "team",
|
||||
requestedReviews: `{"nodes": [
|
||||
{
|
||||
"requestedreviewer": {
|
||||
"__typename": "Team",
|
||||
"name": "Test Team",
|
||||
"slug": "test-team",
|
||||
"organization": {"login": "myorg"}
|
||||
}
|
||||
}
|
||||
]}`,
|
||||
want: []string{"myorg/test-team"},
|
||||
},
|
||||
{
|
||||
name: "multiple users and teams",
|
||||
requestedReviews: `{"nodes": [
|
||||
{
|
||||
"requestedreviewer": {
|
||||
"__typename": "User", "login": "user1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"requestedreviewer": {
|
||||
"__typename": "User", "login": "user2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"requestedreviewer": {
|
||||
"__typename": "Team",
|
||||
"name": "Test Team",
|
||||
"slug": "test-team",
|
||||
"organization": {"login": "myorg"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"requestedreviewer": {
|
||||
"__typename": "Team",
|
||||
"name": "Dev Team",
|
||||
"slug": "dev-team",
|
||||
"organization": {"login": "myorg"}
|
||||
}
|
||||
}
|
||||
]}`,
|
||||
want: []string{"user1", "user2", "myorg/test-team", "myorg/dev-team"},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
err := json.Unmarshal([]byte(tt.requestedReviews), &rr)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to unmarshal json string as ReviewRequests: %v", tt.requestedReviews)
|
||||
}
|
||||
got := rr.Logins()
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Fatalf("Unexpected results: expected %v but got %v", tt.want, got)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,11 @@ var prReviewRequests = shortenQuery(`
|
|||
requestedReviewer {
|
||||
__typename,
|
||||
...on User{login},
|
||||
...on Team{name}
|
||||
...on Team{
|
||||
organization{login}
|
||||
name,
|
||||
slug
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue