11// mock service
22jest . mock ( '../../services/letter-operations' ) ;
33import * as letterService from '../../services/letter-operations' ;
4- const mockedPatchLetterStatus = jest . mocked ( letterService . patchLetterStatus ) ;
4+ const mockedBatchUpdateStatus = jest . mocked ( letterService . enqueueLetterUpdateRequests ) ;
55
66// mock mapper
77jest . mock ( '../../mappers/error-mapper' ) ;
@@ -59,7 +59,7 @@ describe('patchLetter API Handler', () => {
5959 } as unknown as EnvVars
6060 } as Deps ;
6161
62- it ( 'returns 200 OK with updated resource ' , async ( ) => {
62+ it ( 'returns 202 Accepted ' , async ( ) => {
6363 const event = makeApiGwEvent ( {
6464 path : '/letters/id1' ,
6565 body : requestBody ,
@@ -86,14 +86,14 @@ describe('patchLetter API Handler', () => {
8686 }
8787 }
8888 } ;
89- mockedPatchLetterStatus . mockResolvedValue ( updateLetterServiceResponse ) ;
89+ mockedBatchUpdateStatus . mockResolvedValue ( ) ;
9090
9191 const patchLetterHandler = createPatchLetterHandler ( mockedDeps ) ;
9292 const result = await patchLetterHandler ( event , context , callback ) ;
9393
9494 expect ( result ) . toEqual ( {
95- statusCode : 200 ,
96- body : JSON . stringify ( updateLetterServiceResponse , null , 2 )
95+ statusCode : 202 ,
96+ body : ''
9797 } ) ;
9898 } ) ;
9999
@@ -137,16 +137,12 @@ describe('patchLetter API Handler', () => {
137137 expect ( result ) . toEqual ( expectedErrorResponse ) ;
138138 } ) ;
139139
140- it ( 'returns error response when error is thrown by service' , async ( ) => {
141- const error = new Error ( 'Service error' ) ;
142- mockedPatchLetterStatus . mockRejectedValue ( error ) ;
143-
140+ it ( 'returns error when supplier id is missing' , async ( ) => {
144141 const event = makeApiGwEvent ( {
145142 path : '/letters/id1' ,
146143 body : requestBody ,
147144 pathParameters : { id : 'id1' } ,
148145 headers : {
149- 'nhsd-supplier-id' : 'supplier1' ,
150146 'nhsd-correlation-id' : 'correlationId' ,
151147 'x-request-id' : 'requestId'
152148 }
@@ -157,16 +153,17 @@ describe('patchLetter API Handler', () => {
157153 const patchLetterHandler = createPatchLetterHandler ( mockedDeps ) ;
158154 const result = await patchLetterHandler ( event , context , callback ) ;
159155
160- expect ( mockedProcessError ) . toHaveBeenCalledWith ( error , 'correlationId' , mockedDeps . logger ) ;
156+ expect ( mockedProcessError ) . toHaveBeenCalledWith ( new Error ( 'The supplier ID is missing from the request' ) , 'correlationId' , mockedDeps . logger ) ;
161157 expect ( result ) . toEqual ( expectedErrorResponse ) ;
162158 } ) ;
163159
164- it ( 'returns error when supplier id is missing ' , async ( ) => {
160+ it ( 'returns error when request body does not have correct shape ' , async ( ) => {
165161 const event = makeApiGwEvent ( {
166162 path : '/letters/id1' ,
167- body : requestBody ,
163+ body : "{test: 'test'}" ,
168164 pathParameters : { id : 'id1' } ,
169165 headers : {
166+ 'nhsd-supplier-id' : 'supplier1' ,
170167 'nhsd-correlation-id' : 'correlationId' ,
171168 'x-request-id' : 'requestId'
172169 }
@@ -177,14 +174,14 @@ describe('patchLetter API Handler', () => {
177174 const patchLetterHandler = createPatchLetterHandler ( mockedDeps ) ;
178175 const result = await patchLetterHandler ( event , context , callback ) ;
179176
180- expect ( mockedProcessError ) . toHaveBeenCalledWith ( new Error ( 'The supplier ID is missing from the request' ) , 'correlationId' , mockedDeps . logger ) ;
177+ expect ( mockedProcessError ) . toHaveBeenCalledWith ( new ValidationError ( errors . ApiErrorDetail . InvalidRequestBody ) , 'correlationId' , mockedDeps . logger ) ;
181178 expect ( result ) . toEqual ( expectedErrorResponse ) ;
182179 } ) ;
183180
184- it ( 'returns error when request body does not have correct shape ' , async ( ) => {
181+ it ( 'returns error when request body is not json ' , async ( ) => {
185182 const event = makeApiGwEvent ( {
186183 path : '/letters/id1' ,
187- body : "{test: 'test'}" ,
184+ body : '{#invalidJSON' ,
188185 pathParameters : { id : 'id1' } ,
189186 headers : {
190187 'nhsd-supplier-id' : 'supplier1' ,
@@ -202,11 +199,11 @@ describe('patchLetter API Handler', () => {
202199 expect ( result ) . toEqual ( expectedErrorResponse ) ;
203200 } ) ;
204201
205- it ( 'returns error when request body is not json ' , async ( ) => {
202+ it ( 'returns error if path letterId and body letterId do not match ' , async ( ) => {
206203 const event = makeApiGwEvent ( {
207- path : '/letters/id1 ' ,
208- body : '{#invalidJSON' ,
209- pathParameters : { id : 'id1 ' } ,
204+ path : '/letters/id2 ' ,
205+ body : requestBody ,
206+ pathParameters : { id : 'id2 ' } ,
210207 headers : {
211208 'nhsd-supplier-id' : 'supplier1' ,
212209 'nhsd-correlation-id' : 'correlationId' ,
@@ -219,7 +216,7 @@ describe('patchLetter API Handler', () => {
219216 const patchLetterHandler = createPatchLetterHandler ( mockedDeps ) ;
220217 const result = await patchLetterHandler ( event , context , callback ) ;
221218
222- expect ( mockedProcessError ) . toHaveBeenCalledWith ( new ValidationError ( errors . ApiErrorDetail . InvalidRequestBody ) , 'correlationId' , mockedDeps . logger ) ;
219+ expect ( mockedProcessError ) . toHaveBeenCalledWith ( new ValidationError ( errors . ApiErrorDetail . InvalidRequestLetterIdsMismatch ) , 'correlationId' , mockedDeps . logger ) ;
223220 expect ( result ) . toEqual ( expectedErrorResponse ) ;
224221 } ) ;
225222
0 commit comments