@@ -38,7 +38,7 @@ describe('reviewCloser', () => {
3838 pendingReviewers : [ ] ,
3939 pdfIdentifier : '' ,
4040 } ;
41- activeReviewRepo . getReviewByThreadIdOrFail = jest . fn ( ) . mockResolvedValue ( review ) ;
41+ activeReviewRepo . getReviewByThreadIdOrUndefined = jest . fn ( ) . mockResolvedValue ( review ) ;
4242
4343 await reviewCloser . closeReviewIfComplete ( app , threadId ) ;
4444
@@ -71,7 +71,7 @@ describe('reviewCloser', () => {
7171 pendingReviewers : [ ] ,
7272 pdfIdentifier : '' ,
7373 } ;
74- activeReviewRepo . getReviewByThreadIdOrFail = jest . fn ( ) . mockResolvedValue ( review ) ;
74+ activeReviewRepo . getReviewByThreadIdOrUndefined = jest . fn ( ) . mockResolvedValue ( review ) ;
7575
7676 await reviewCloser . closeReviewIfComplete ( app , threadId ) ;
7777
@@ -98,7 +98,7 @@ describe('reviewCloser', () => {
9898 pendingReviewers : [ { userId : '123' , expiresAt : 1 , messageTimestamp : '456' } ] ,
9999 pdfIdentifier : '' ,
100100 } ;
101- activeReviewRepo . getReviewByThreadIdOrFail = jest . fn ( ) . mockResolvedValue ( review ) ;
101+ activeReviewRepo . getReviewByThreadIdOrUndefined = jest . fn ( ) . mockResolvedValue ( review ) ;
102102
103103 await reviewCloser . closeReviewIfComplete ( app , threadId ) ;
104104
@@ -127,7 +127,7 @@ describe('reviewCloser', () => {
127127 pdfIdentifier : '' ,
128128 } ;
129129
130- activeReviewRepo . getReviewByThreadIdOrFail = jest . fn ( ) . mockResolvedValue ( review ) ;
130+ activeReviewRepo . getReviewByThreadIdOrUndefined = jest . fn ( ) . mockResolvedValue ( review ) ;
131131
132132 await reviewCloser . closeReviewIfComplete ( app , threadId ) ;
133133
@@ -144,6 +144,17 @@ describe('reviewCloser', () => {
144144 ) ;
145145 expect ( activeReviewRepo . remove ) . toHaveBeenCalledWith ( threadId ) ;
146146 } ) ;
147+
148+ it ( 'should gracefully handle when review has already been closed by concurrent action' , async ( ) => {
149+ const threadId = '111' ;
150+ activeReviewRepo . getReviewByThreadIdOrUndefined = jest . fn ( ) . mockResolvedValue ( undefined ) ;
151+
152+ await reviewCloser . closeReviewIfComplete ( app , threadId ) ;
153+
154+ expect ( chatService . replyToReviewThread ) . not . toHaveBeenCalled ( ) ;
155+ expect ( activeReviewRepo . remove ) . not . toHaveBeenCalled ( ) ;
156+ expect ( closeRequest ) . not . toHaveBeenCalled ( ) ;
157+ } ) ;
147158 } ) ;
148159} ) ;
149160
0 commit comments