@@ -7,7 +7,7 @@ import * as Commands from '../../../src/Commands.ts'
77import * as ReviewRequests from '../../../src/ReviewRequests/index.ts'
88import * as StatusCodes from '../../../src/StatusCodes.ts'
99import * as _ from '../../../src/WebApp/request-review-flow/index.ts'
10- import type { GetReviewRequestEnv , SaveReviewRequestEnv } from '../../../src/review-request.ts'
10+ import type { SaveReviewRequestEnv } from '../../../src/review-request.ts'
1111import { requestReviewCheckMatch , requestReviewPublishedMatch , requestReviewStartMatch } from '../../../src/routes.ts'
1212import * as EffectTest from '../../EffectTest.ts'
1313import * as fc from '../../fc.ts'
@@ -24,15 +24,19 @@ describe('requestReviewStart', () => {
2424 fc . uuid ( ) ,
2525 ] ) ( 'when a request can be started' , ( preprint , user , preprintTitle , locale , uuid ) =>
2626 Effect . gen ( function * ( ) {
27- const runtime = yield * Effect . runtime < ReviewRequests . ReviewRequestCommands > ( )
28- const getReviewRequest = jest . fn < GetReviewRequestEnv [ 'getReviewRequest' ] > ( _ => TE . left ( 'not-found' ) )
27+ const findReviewRequestByAPrereviewer = jest . fn <
28+ ( typeof ReviewRequests . ReviewRequestQueries . Service ) [ 'findReviewRequestByAPrereviewer' ]
29+ > ( _ => Effect . succeedNone )
30+ const runtime = yield * Effect . provide (
31+ Effect . runtime < ReviewRequests . ReviewRequestCommands | ReviewRequests . ReviewRequestQueries > ( ) ,
32+ Layer . mock ( ReviewRequests . ReviewRequestQueries , { findReviewRequestByAPrereviewer } ) ,
33+ )
2934 const saveReviewRequest = jest . fn < SaveReviewRequestEnv [ 'saveReviewRequest' ] > ( _ => TE . right ( undefined ) )
3035
3136 const actual = yield * Effect . promise ( ( ) =>
3237 _ . requestReviewStart ( { preprint, user, locale } ) ( {
3338 generateUuid : ( ) => uuid ,
3439 getPreprintTitle : ( ) => TE . right ( preprintTitle ) ,
35- getReviewRequest,
3640 runtime,
3741 saveReviewRequest,
3842 } ) ( ) ,
@@ -43,7 +47,10 @@ describe('requestReviewStart', () => {
4347 status : StatusCodes . SeeOther ,
4448 location : format ( requestReviewCheckMatch . formatter , { id : preprintTitle . id } ) ,
4549 } )
46- expect ( getReviewRequest ) . toHaveBeenCalledWith ( user . orcid , preprintTitle . id as never )
50+ expect ( findReviewRequestByAPrereviewer ) . toHaveBeenCalledWith ( {
51+ requesterId : user . orcid ,
52+ preprintId : preprintTitle . id ,
53+ } )
4754 expect ( saveReviewRequest ) . toHaveBeenCalledWith ( user . orcid , preprintTitle . id as never , {
4855 status : 'incomplete' ,
4956 id : uuid ,
@@ -70,13 +77,14 @@ describe('requestReviewStart', () => {
7077 ) ,
7178 ] ) ( "when a request can't be started" , ( preprint , user , preprintTitle , locale , uuid , error ) =>
7279 Effect . gen ( function * ( ) {
73- const runtime = yield * Effect . runtime < ReviewRequests . ReviewRequestCommands > ( )
80+ const runtime = yield * Effect . runtime <
81+ ReviewRequests . ReviewRequestCommands | ReviewRequests . ReviewRequestQueries
82+ > ( )
7483
7584 const actual = yield * Effect . promise ( ( ) =>
7685 _ . requestReviewStart ( { preprint, user, locale } ) ( {
7786 generateUuid : ( ) => uuid ,
7887 getPreprintTitle : ( ) => TE . right ( preprintTitle ) ,
79- getReviewRequest : ( ) => TE . left ( 'not-found' ) ,
8088 runtime,
8189 saveReviewRequest : ( ) => TE . right ( undefined ) ,
8290 } ) ( ) ,
@@ -91,7 +99,14 @@ describe('requestReviewStart', () => {
9199 js : [ ] ,
92100 } )
93101 } ) . pipe (
94- Effect . provide ( Layer . mock ( ReviewRequests . ReviewRequestCommands , { startReviewRequest : ( ) => error } ) ) ,
102+ Effect . provide (
103+ Layer . mergeAll (
104+ Layer . mock ( ReviewRequests . ReviewRequestCommands , { startReviewRequest : ( ) => error } ) ,
105+ Layer . mock ( ReviewRequests . ReviewRequestQueries , {
106+ findReviewRequestByAPrereviewer : ( ) => Effect . succeedNone ,
107+ } ) ,
108+ ) ,
109+ ) ,
95110 EffectTest . run ,
96111 ) ,
97112 )
@@ -100,19 +115,19 @@ describe('requestReviewStart', () => {
100115 test . prop ( [
101116 fc . indeterminatePreprintId ( ) ,
102117 fc . user ( ) ,
103- fc . completedReviewRequest ( ) ,
118+ fc . record ( { _tag : fc . constant ( 'PublishedReviewRequest' ) , id : fc . uuid ( ) } ) ,
104119 fc . preprintTitle ( { id : fc . preprintId ( ) } ) ,
105120 fc . supportedLocale ( ) ,
106121 ] ) ( 'when a request has already been completed' , ( preprint , user , reviewRequest , preprintTitle , locale ) =>
107122 Effect . gen ( function * ( ) {
108- const runtime = yield * Effect . runtime < ReviewRequests . ReviewRequestCommands > ( )
109- const getReviewRequest = jest . fn < GetReviewRequestEnv [ 'getReviewRequest' ] > ( _ => TE . right ( reviewRequest ) )
123+ const runtime = yield * Effect . runtime <
124+ ReviewRequests . ReviewRequestCommands | ReviewRequests . ReviewRequestQueries
125+ > ( )
110126
111127 const actual = yield * Effect . promise ( ( ) =>
112128 _ . requestReviewStart ( { preprint, user, locale } ) ( {
113129 generateUuid : shouldNotBeCalled ,
114130 getPreprintTitle : ( ) => TE . right ( preprintTitle ) ,
115- getReviewRequest,
116131 runtime,
117132 saveReviewRequest : shouldNotBeCalled ,
118133 } ) ( ) ,
@@ -123,26 +138,35 @@ describe('requestReviewStart', () => {
123138 status : StatusCodes . SeeOther ,
124139 location : format ( requestReviewPublishedMatch . formatter , { id : preprintTitle . id } ) ,
125140 } )
126- expect ( getReviewRequest ) . toHaveBeenCalledWith ( user . orcid , preprintTitle . id as never )
127- } ) . pipe ( Effect . provide ( Layer . mock ( ReviewRequests . ReviewRequestCommands , { } ) ) , EffectTest . run ) ,
141+ } ) . pipe (
142+ Effect . provide (
143+ Layer . mergeAll (
144+ Layer . mock ( ReviewRequests . ReviewRequestCommands , { } ) ,
145+ Layer . mock ( ReviewRequests . ReviewRequestQueries , {
146+ findReviewRequestByAPrereviewer : ( ) => Effect . succeedSome ( reviewRequest ) ,
147+ } ) ,
148+ ) ,
149+ ) ,
150+ EffectTest . run ,
151+ ) ,
128152 )
129153
130154 test . prop ( [
131155 fc . indeterminatePreprintId ( ) ,
132156 fc . user ( ) ,
133- fc . incompleteReviewRequest ( ) ,
157+ fc . record ( { _tag : fc . constantFrom ( 'ReviewRequestPendingPublication' ) , id : fc . uuid ( ) } ) ,
134158 fc . preprintTitle ( { id : fc . preprintId ( ) } ) ,
135159 fc . supportedLocale ( ) ,
136160 ] ) ( 'when a request has already been started' , ( preprint , user , reviewRequest , preprintTitle , locale ) =>
137161 Effect . gen ( function * ( ) {
138- const runtime = yield * Effect . runtime < ReviewRequests . ReviewRequestCommands > ( )
139- const getReviewRequest = jest . fn < GetReviewRequestEnv [ 'getReviewRequest' ] > ( _ => TE . right ( reviewRequest ) )
162+ const runtime = yield * Effect . runtime <
163+ ReviewRequests . ReviewRequestCommands | ReviewRequests . ReviewRequestQueries
164+ > ( )
140165
141166 const actual = yield * Effect . promise ( ( ) =>
142167 _ . requestReviewStart ( { preprint, user, locale } ) ( {
143168 generateUuid : shouldNotBeCalled ,
144169 getPreprintTitle : ( ) => TE . right ( preprintTitle ) ,
145- getReviewRequest,
146170 runtime,
147171 saveReviewRequest : shouldNotBeCalled ,
148172 } ) ( ) ,
@@ -158,22 +182,32 @@ describe('requestReviewStart', () => {
158182 skipToLabel : 'main' ,
159183 js : [ ] ,
160184 } )
161- expect ( getReviewRequest ) . toHaveBeenCalledWith ( user . orcid , preprintTitle . id as never )
162- } ) . pipe ( Effect . provide ( Layer . mock ( ReviewRequests . ReviewRequestCommands , { } ) ) , EffectTest . run ) ,
185+ } ) . pipe (
186+ Effect . provide (
187+ Layer . mergeAll (
188+ Layer . mock ( ReviewRequests . ReviewRequestCommands , { } ) ,
189+ Layer . mock ( ReviewRequests . ReviewRequestQueries , {
190+ findReviewRequestByAPrereviewer : ( ) => Effect . succeedSome ( reviewRequest ) ,
191+ } ) ,
192+ ) ,
193+ ) ,
194+ EffectTest . run ,
195+ ) ,
163196 )
164197 } )
165198
166199 test . prop ( [ fc . indeterminatePreprintId ( ) , fc . supportedLocale ( ) ] ) (
167200 'when the user is not logged in' ,
168201 ( preprint , locale ) =>
169202 Effect . gen ( function * ( ) {
170- const runtime = yield * Effect . runtime < ReviewRequests . ReviewRequestCommands > ( )
203+ const runtime = yield * Effect . runtime <
204+ ReviewRequests . ReviewRequestCommands | ReviewRequests . ReviewRequestQueries
205+ > ( )
171206
172207 const actual = yield * Effect . promise ( ( ) =>
173208 _ . requestReviewStart ( { preprint, locale } ) ( {
174209 generateUuid : shouldNotBeCalled ,
175210 getPreprintTitle : shouldNotBeCalled ,
176- getReviewRequest : shouldNotBeCalled ,
177211 runtime,
178212 saveReviewRequest : shouldNotBeCalled ,
179213 } ) ( ) ,
@@ -183,6 +217,14 @@ describe('requestReviewStart', () => {
183217 _tag : 'LogInResponse' ,
184218 location : format ( requestReviewStartMatch . formatter , { id : preprint } ) ,
185219 } )
186- } ) . pipe ( Effect . provide ( Layer . mock ( ReviewRequests . ReviewRequestCommands , { } ) ) , EffectTest . run ) ,
220+ } ) . pipe (
221+ Effect . provide (
222+ Layer . mergeAll (
223+ Layer . mock ( ReviewRequests . ReviewRequestCommands , { } ) ,
224+ Layer . mock ( ReviewRequests . ReviewRequestQueries , { } ) ,
225+ ) ,
226+ ) ,
227+ EffectTest . run ,
228+ ) ,
187229 )
188230} )
0 commit comments