@@ -20,12 +20,17 @@ import (
2020
2121type fakeReviewService struct {
2222 triggerErr error
23+ trigger reviewcore.TriggerResult
24+ list reviewcore.SessionReviews
2325}
2426
2527func (f * fakeReviewService ) Trigger (context.Context , domain.SessionID ) (reviewcore.TriggerResult , error ) {
2628 if f .triggerErr != nil {
2729 return reviewcore.TriggerResult {}, f .triggerErr
2830 }
31+ if f .trigger .ReviewerHandleID != "" || f .trigger .Run .ID != "" || f .trigger .Items != nil || f .trigger .CreatedRuns != nil {
32+ return f .trigger , nil
33+ }
2934 return reviewcore.TriggerResult {Run : domain.ReviewRun {ID : "run-1" }, Created : true }, nil
3035}
3136
@@ -34,7 +39,7 @@ func (f *fakeReviewService) Submit(context.Context, domain.SessionID, string, do
3439}
3540
3641func (f * fakeReviewService ) List (context.Context , domain.SessionID ) (reviewcore.SessionReviews , error ) {
37- return reviewcore. SessionReviews {} , nil
42+ return f . list , nil
3843}
3944
4045func newReviewTestServer (t * testing.T , svc reviewsvc.Manager ) * httptest.Server {
@@ -59,3 +64,46 @@ func TestReviewsTrigger_MissingReviewerBinaryReturns422WithCause(t *testing.T) {
5964 t .Fatalf ("message = %q, want reviewer binary cause" , got .Message )
6065 }
6166}
67+
68+ func TestReviewsListIncludesItems (t * testing.T ) {
69+ srv := newReviewTestServer (t , & fakeReviewService {list : reviewcore.SessionReviews {
70+ ReviewerHandleID : "review-mer-1" ,
71+ Runs : []domain.ReviewRun {{ID : "run-1" , PRURL : "https://github.com/o/r/pull/1" , TargetSHA : "sha1" }},
72+ Items : []reviewcore.PRReviewItem {{PRURL : "https://github.com/o/r/pull/1" , PRNumber : 1 , TargetSHA : "sha1" , Status : reviewcore .ItemUpToDate }},
73+ }})
74+
75+ body , status , headers := doRequest (t , srv , "GET" , "/api/v1/sessions/mer-1/reviews" , "" )
76+ assertJSON (t , headers )
77+ if status != http .StatusOK {
78+ t .Fatalf ("status = %d body=%s" , status , body )
79+ }
80+ if ! strings .Contains (string (body ), `"reviewItems"` ) || ! strings .Contains (string (body ), `"items"` ) || ! strings .Contains (string (body ), `"up_to_date"` ) || ! strings .Contains (string (body ), `"reviewerHandleId":"review-mer-1"` ) {
81+ t .Fatalf ("body missing review items/handle: %s" , body )
82+ }
83+ }
84+
85+ func TestReviewsTriggerIncludesBatchFields (t * testing.T ) {
86+ run1 := domain.ReviewRun {ID : "run-1" , PRURL : "https://github.com/o/r/pull/1" , TargetSHA : "sha1" }
87+ run2 := domain.ReviewRun {ID : "run-2" , PRURL : "https://github.com/o/r/pull/2" , TargetSHA : "sha2" }
88+ srv := newReviewTestServer (t , & fakeReviewService {trigger : reviewcore.TriggerResult {
89+ Run : run1 ,
90+ ReviewerHandleID : "review-mer-1" ,
91+ Created : true ,
92+ CreatedRuns : []domain.ReviewRun {run1 , run2 },
93+ Items : []reviewcore.PRReviewItem {
94+ {PRURL : run1 .PRURL , PRNumber : 1 , TargetSHA : run1 .TargetSHA , Status : reviewcore .ItemRunning , LatestRun : & run1 },
95+ {PRURL : run2 .PRURL , PRNumber : 2 , TargetSHA : run2 .TargetSHA , Status : reviewcore .ItemRunning , LatestRun : & run2 },
96+ },
97+ }})
98+
99+ body , status , headers := doRequest (t , srv , "POST" , "/api/v1/sessions/mer-1/reviews/trigger" , "" )
100+ assertJSON (t , headers )
101+ if status != http .StatusCreated {
102+ t .Fatalf ("status = %d body=%s" , status , body )
103+ }
104+ for _ , want := range []string {`"reviews"` , `"createdReviews"` , `"reviewItems"` , `"items"` , `"run-1"` , `"run-2"` , `"reviewerHandleId":"review-mer-1"` } {
105+ if ! strings .Contains (string (body ), want ) {
106+ t .Fatalf ("body missing %s: %s" , want , body )
107+ }
108+ }
109+ }
0 commit comments