Skip to content

Commit 48e9d90

Browse files
committed
Add DeletePendingReview endpoint
- Added new API endpoint for deleting a pending review. - Wrote unit tests for the same.
1 parent 59922c5 commit 48e9d90

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

github/pulls_reviews.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,29 @@ func (s *PullRequestsService) GetReview(owner string, repo string, number int, r
103103
return review, resp, err
104104
}
105105

106+
// DeletePendingReview deletes the specified pull request pending review.
107+
//
108+
// GitHub API docs: https://developer.github.com/v3/pulls/reviews/#delete-a-pending-review
109+
func (s *PullRequestsService) DeletePendingReview(owner string, repo string, number int, reviewID int) (*PullRequestReview, *Response, error) {
110+
u := fmt.Sprintf("repos/%v/%v/pulls/%d/reviews/%d", owner, repo, number, reviewID)
111+
112+
req, err := s.client.NewRequest("DELETE", u, nil)
113+
if err != nil {
114+
return nil, nil, err
115+
}
116+
117+
// TODO: remove custom Accept header when this API fully launches
118+
req.Header.Set("Accept", mediaTypePullRequestReviewsPreview)
119+
120+
review := new(PullRequestReview)
121+
resp, err := s.client.Do(req, review)
122+
if err != nil {
123+
return nil, resp, err
124+
}
125+
126+
return review, resp, err
127+
}
128+
106129
// ListReviewComments lists all the comments for the specified review.
107130
//
108131
// GitHub API docs: https://developer.github.com/v3/pulls/reviews/#get-a-single-reviews-comments

github/pulls_reviews_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,32 @@ func TestPullRequestsService_GetReview_invalidOwner(t *testing.T) {
6868
testURLParseError(t, err)
6969
}
7070

71+
func TestPullRequestsService_DeletePendingReview(t *testing.T) {
72+
setup()
73+
defer teardown()
74+
75+
mux.HandleFunc("/repos/o/r/pulls/1/reviews/1", func(w http.ResponseWriter, r *http.Request) {
76+
testMethod(t, r, "DELETE")
77+
testHeader(t, r, "Accept", mediaTypePullRequestReviewsPreview)
78+
fmt.Fprint(w, `{"id":1}`)
79+
})
80+
81+
review, _, err := client.PullRequests.DeletePendingReview("o", "r", 1, 1)
82+
if err != nil {
83+
t.Errorf("PullRequests.DeletePendingReview returned error: %v", err)
84+
}
85+
86+
want := &PullRequestReview{ID: Int(1)}
87+
if !reflect.DeepEqual(review, want) {
88+
t.Errorf("PullRequests.DeletePendingReview returned %+v, want %+v", review, want)
89+
}
90+
}
91+
92+
func TestPullRequestsService_DeletePendingReview_invalidOwner(t *testing.T) {
93+
_, _, err := client.PullRequests.DeletePendingReview("%", "r", 1, 1)
94+
testURLParseError(t, err)
95+
}
96+
7197
func TestPullRequestsService_ListReviewComments(t *testing.T) {
7298
setup()
7399
defer teardown()

0 commit comments

Comments
 (0)