feat(github): implement Reviewer and Identity interfaces (#81) #105

Merged
aweiker merged 7 commits from review-bot-issue-81 into feature/github-support 2026-05-13 13:39:14 +00:00
2 changed files with 12 additions and 6 deletions
Showing only changes of commit 8b256360bf - Show all commits
+8 -2
View File
@@ -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)
1
+3 -3
View File
1
@@ -363,7 +363,7 @@ func TestDismissReview_401(t *testing.T) {
func TestTranslateGitHubReviewState(t *testing.T) {
tests := []struct {
input string
expected 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)
}
}
}