Skip to content

Commit c4a49db

Browse files
authored
feat: Document review request events in Timeline struct (#3391)
1 parent 232522b commit c4a49db

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

github/issues_timeline.go

+8
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,14 @@ type Timeline struct {
9797
// reviewed
9898
// The pull request was reviewed.
9999
//
100+
// review_requested
101+
// The actor requested a review from a user or team.
102+
// Reviewer and Requester/RequestedTeam will be populated.
103+
//
104+
// review_request_removed
105+
// The actor removed a review request from a user or team.
106+
// Reviewer and Requester/RequestedTeam will be populated.
107+
//
100108
// subscribed
101109
// The actor subscribed to receive notifications for an issue.
102110
//

github/issues_timeline_test.go

+88
Original file line numberDiff line numberDiff line change
@@ -255,3 +255,91 @@ func TestTimeline_Marshal(t *testing.T) {
255255

256256
testJSONMarshal(t, u, want)
257257
}
258+
259+
func TestTimeline_ReviewRequests(t *testing.T) {
260+
t.Parallel()
261+
client, mux, _ := setup(t)
262+
263+
mux.HandleFunc("/repos/example-org/example-repo/issues/3/timeline", func(w http.ResponseWriter, r *http.Request) {
264+
testMethod(t, r, "GET")
265+
fmt.Fprint(w, `[{
266+
"id": 1234567890,
267+
"url": "http://example.com/timeline/1",
268+
"actor": {
269+
"login": "actor-user",
270+
"id": 1
271+
},
272+
"event": "review_requested",
273+
"created_at": "2006-01-02T15:04:05Z",
274+
"requested_reviewer": {
275+
"login": "reviewer-user",
276+
"id": 2
277+
},
278+
"review_requester": {
279+
"login": "requester-user",
280+
"id": 1
281+
}
282+
},
283+
{
284+
"id": 1234567891,
285+
"url": "http://example.com/timeline/2",
286+
"actor": {
287+
"login": "actor-user",
288+
"id": 1
289+
},
290+
"event": "review_request_removed",
291+
"created_at": "2006-01-02T15:04:05Z",
292+
"requested_reviewer": {
293+
"login": "reviewer-user",
294+
"id": 2
295+
}
296+
}]`)
297+
})
298+
299+
ctx := context.Background()
300+
events, _, err := client.Issues.ListIssueTimeline(ctx, "example-org", "example-repo", 3, nil)
301+
if err != nil {
302+
t.Errorf("Issues.ListIssueTimeline returned error: %v", err)
303+
}
304+
305+
want := []*Timeline{
306+
{
307+
ID: Ptr(int64(1234567890)),
308+
URL: Ptr("http://example.com/timeline/1"),
309+
Actor: &User{
310+
Login: Ptr("actor-user"),
311+
ID: Ptr(int64(1)),
312+
},
313+
Event: Ptr("review_requested"),
314+
CreatedAt: &Timestamp{referenceTime},
315+
Reviewer: &User{
316+
Login: Ptr("reviewer-user"),
317+
ID: Ptr(int64(2)),
318+
},
319+
Requester: &User{
320+
Login: Ptr("requester-user"),
321+
ID: Ptr(int64(1)),
322+
},
323+
},
324+
{
325+
ID: Ptr(int64(1234567891)),
326+
URL: Ptr("http://example.com/timeline/2"),
327+
Actor: &User{
328+
Login: Ptr("actor-user"),
329+
ID: Ptr(int64(1)),
330+
},
331+
Event: Ptr("review_request_removed"),
332+
CreatedAt: &Timestamp{referenceTime},
333+
Reviewer: &User{
334+
Login: Ptr("reviewer-user"),
335+
ID: Ptr(int64(2)),
336+
},
337+
},
338+
}
339+
340+
if !cmp.Equal(events, want) {
341+
t.Errorf("Issues.ListIssueTimeline review request events = %+v, want %+v", events, want)
342+
diff := cmp.Diff(events, want)
343+
t.Errorf("Difference: %s", diff)
344+
}
345+
}

0 commit comments

Comments
 (0)