diff --git a/github/review.go b/github/review.go index 7502fc7..ead197f 100644 --- a/github/review.go +++ b/github/review.go @@ -66,9 +66,15 @@ func translateGitHubReviewState(state string) string { } // PostReview submits a review on a pull request. -// The ReviewRequest.Event values (APPROVE, REQUEST_CHANGES, COMMENT) are sent -// directly — they match GitHub's canonical event strings. +// +// The vcs.ReviewEvent constants (ReviewEventApprove, ReviewEventRequestChanges, +// ReviewEventComment) have string values that match GitHub's wire-format event +// strings (APPROVE, REQUEST_CHANGES, COMMENT), so Event is cast directly to +// string without translation. +// // ReviewComment.Position maps directly to the GitHub API position field. +// When req.Comments is empty, the payload omits the comments field entirely +// (via the omitempty tag on postReviewRequest.Comments). func (c *Client) PostReview(ctx context.Context, owner, repo string, number int, req vcs.ReviewRequest) (*vcs.Review, error) { reqURL := fmt.Sprintf("%s/repos/%s/%s/pulls/%d/reviews", c.baseURL, url.PathEscape(owner), url.PathEscape(repo), number) diff --git a/github/review_test.go b/github/review_test.go index da6535d..fa1200c 100644 --- a/github/review_test.go +++ b/github/review_test.go @@ -362,8 +362,8 @@ func TestDismissReview_401(t *testing.T) { func TestTranslateGitHubReviewState(t *testing.T) { tests := []struct { - input string - expected string + input string + want string }{ {"APPROVED", "APPROVED"}, {"CHANGES_REQUESTED", "REQUEST_CHANGES"}, @@ -374,8 +374,8 @@ func TestTranslateGitHubReviewState(t *testing.T) { } for _, tt := range tests { got := translateGitHubReviewState(tt.input) - if got != tt.expected { - t.Errorf("translateGitHubReviewState(%q) = %q, want %q", tt.input, got, tt.expected) + if got != tt.want { + t.Errorf("translateGitHubReviewState(%q) = %q, want %q", tt.input, got, tt.want) } } }