@@ -22,7 +22,19 @@ function makeDeps(): Deps {
2222 ssmClient : {
2323 send : jest . fn ( ) ,
2424 } as unknown as Deps [ "ssmClient" ] ,
25- } as Deps ;
25+ } ;
26+ }
27+
28+ function getSsmSendMock ( deps : Deps ) : jest . Mock {
29+ return deps . ssmClient . send as unknown as jest . Mock ;
30+ }
31+
32+ function getLambdaSendMock ( deps : Deps ) : jest . Mock {
33+ return deps . lambdaClient . send as unknown as jest . Mock ;
34+ }
35+
36+ function getLogErrorMock ( deps : Deps ) : jest . Mock {
37+ return deps . logger . error as unknown as jest . Mock ;
2638}
2739
2840describe ( "Supplier Mock Lambda" , ( ) => {
@@ -32,13 +44,11 @@ describe("Supplier Mock Lambda", () => {
3244
3345 it ( "invokes get letters and patch letter successfully" , async ( ) => {
3446 const deps = makeDeps ( ) ;
35- const ssmSend = jest
36- . mocked ( deps . ssmClient . send )
47+ const ssmSend = getSsmSendMock ( deps )
3748 . mockResolvedValueOnce ( { Parameter : { Value : "250" } } )
3849 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
3950
40- const lambdaSend = jest
41- . mocked ( deps . lambdaClient . send )
51+ const lambdaSend = getLambdaSendMock ( deps )
4252 . mockResolvedValueOnce ( {
4353 Payload : Buffer . from (
4454 JSON . stringify ( {
@@ -118,21 +128,18 @@ describe("Supplier Mock Lambda", () => {
118128
119129 it ( "falls back to default limit and supplier id when parameter values are empty" , async ( ) => {
120130 const deps = makeDeps ( ) ;
121- const ssmSend = jest
122- . mocked ( deps . ssmClient . send )
131+ const ssmSend = getSsmSendMock ( deps )
123132 . mockResolvedValueOnce ( { Parameter : { Value : "1" } } )
124133 . mockResolvedValueOnce ( { Parameter : { Value : "" } } ) ;
125134
126- const lambdaSend = jest
127- . mocked ( deps . lambdaClient . send )
128- . mockResolvedValueOnce ( {
129- Payload : Buffer . from (
130- JSON . stringify ( {
131- statusCode : 200 ,
132- body : JSON . stringify ( { data : [ ] } ) ,
133- } ) ,
134- ) ,
135- } ) ;
135+ const lambdaSend = getLambdaSendMock ( deps ) . mockResolvedValueOnce ( {
136+ Payload : Buffer . from (
137+ JSON . stringify ( {
138+ statusCode : 200 ,
139+ body : JSON . stringify ( { data : [ ] } ) ,
140+ } ) ,
141+ ) ,
142+ } ) ;
136143
137144 const handler = createHandler ( deps ) ;
138145 await expect ( handler ( ) ) . resolves . toBeUndefined ( ) ;
@@ -152,49 +159,44 @@ describe("Supplier Mock Lambda", () => {
152159 it ( "throws when reading limit parameter fails" , async ( ) => {
153160 const deps = makeDeps ( ) ;
154161 const ssmError = new Error ( "SSM unavailable" ) ;
155- jest . mocked ( deps . ssmClient . send ) . mockRejectedValueOnce ( ssmError ) ;
162+ getSsmSendMock ( deps ) . mockRejectedValueOnce ( ssmError ) ;
156163
157164 const handler = createHandler ( deps ) ;
158165 await expect ( handler ( ) ) . rejects . toThrow ( "SSM unavailable" ) ;
159- expect ( jest . mocked ( deps . logger . error ) ) . toHaveBeenCalled ( ) ;
166+ expect ( getLogErrorMock ( deps ) ) . toHaveBeenCalled ( ) ;
160167 } ) ;
161168
162169 it ( "throws when reading supplier id parameter fails" , async ( ) => {
163170 const deps = makeDeps ( ) ;
164- jest
165- . mocked ( deps . ssmClient . send )
171+ getSsmSendMock ( deps )
166172 . mockResolvedValueOnce ( { Parameter : { Value : "250" } } )
167173 . mockRejectedValueOnce ( new Error ( "Supplier parameter not found" ) ) ;
168174
169175 const handler = createHandler ( deps ) ;
170176 await expect ( handler ( ) ) . rejects . toThrow ( "Supplier parameter not found" ) ;
171- expect ( jest . mocked ( deps . logger . error ) ) . toHaveBeenCalled ( ) ;
177+ expect ( getLogErrorMock ( deps ) ) . toHaveBeenCalled ( ) ;
172178 } ) ;
173179
174180 it ( "throws when invoking get letters fails" , async ( ) => {
175181 const deps = makeDeps ( ) ;
176- jest
177- . mocked ( deps . ssmClient . send )
182+ getSsmSendMock ( deps )
178183 . mockResolvedValueOnce ( { Parameter : { Value : "200" } } )
179184 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
180185
181- jest
182- . mocked ( deps . lambdaClient . send )
183- . mockRejectedValueOnce ( new Error ( "Invoke failed" ) ) ;
186+ getLambdaSendMock ( deps ) . mockRejectedValueOnce ( new Error ( "Invoke failed" ) ) ;
184187
185188 const handler = createHandler ( deps ) ;
186189 await expect ( handler ( ) ) . rejects . toThrow ( "Invoke failed" ) ;
187- expect ( jest . mocked ( deps . logger . error ) ) . toHaveBeenCalled ( ) ;
190+ expect ( getLogErrorMock ( deps ) ) . toHaveBeenCalled ( ) ;
188191 } ) ;
189192
190193 it ( "throws when get letters lambda returns function error" , async ( ) => {
191194 const deps = makeDeps ( ) ;
192- jest
193- . mocked ( deps . ssmClient . send )
195+ getSsmSendMock ( deps )
194196 . mockResolvedValueOnce ( { Parameter : { Value : "200" } } )
195197 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
196198
197- jest . mocked ( deps . lambdaClient . send ) . mockResolvedValueOnce ( {
199+ getLambdaSendMock ( deps ) . mockResolvedValueOnce ( {
198200 FunctionError : "Unhandled" ,
199201 Payload : Buffer . from ( JSON . stringify ( { statusCode : 200 , body : "{}" } ) ) ,
200202 } ) ;
@@ -207,12 +209,11 @@ describe("Supplier Mock Lambda", () => {
207209
208210 it ( "throws when get letters lambda returns non-200 status" , async ( ) => {
209211 const deps = makeDeps ( ) ;
210- jest
211- . mocked ( deps . ssmClient . send )
212+ getSsmSendMock ( deps )
212213 . mockResolvedValueOnce ( { Parameter : { Value : "200" } } )
213214 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
214215
215- jest . mocked ( deps . lambdaClient . send ) . mockResolvedValueOnce ( {
216+ getLambdaSendMock ( deps ) . mockResolvedValueOnce ( {
216217 Payload : Buffer . from ( JSON . stringify ( { statusCode : 500 , body : "{}" } ) ) ,
217218 } ) ;
218219
@@ -224,12 +225,11 @@ describe("Supplier Mock Lambda", () => {
224225
225226 it ( "throws when get letters lambda response has no payload" , async ( ) => {
226227 const deps = makeDeps ( ) ;
227- jest
228- . mocked ( deps . ssmClient . send )
228+ getSsmSendMock ( deps )
229229 . mockResolvedValueOnce ( { Parameter : { Value : "200" } } )
230230 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
231231
232- jest . mocked ( deps . lambdaClient . send ) . mockResolvedValueOnce ( { } ) ;
232+ getLambdaSendMock ( deps ) . mockResolvedValueOnce ( { } ) ;
233233
234234 const handler = createHandler ( deps ) ;
235235 await expect ( handler ( ) ) . rejects . toThrow (
@@ -239,13 +239,11 @@ describe("Supplier Mock Lambda", () => {
239239
240240 it ( "throws when invoking patch letter fails" , async ( ) => {
241241 const deps = makeDeps ( ) ;
242- jest
243- . mocked ( deps . ssmClient . send )
242+ getSsmSendMock ( deps )
244243 . mockResolvedValueOnce ( { Parameter : { Value : "200" } } )
245244 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
246245
247- jest
248- . mocked ( deps . lambdaClient . send )
246+ getLambdaSendMock ( deps )
249247 . mockResolvedValueOnce ( {
250248 Payload : Buffer . from (
251249 JSON . stringify ( {
@@ -260,18 +258,16 @@ describe("Supplier Mock Lambda", () => {
260258
261259 const handler = createHandler ( deps ) ;
262260 await expect ( handler ( ) ) . rejects . toThrow ( "Patch invoke failed" ) ;
263- expect ( jest . mocked ( deps . logger . error ) ) . toHaveBeenCalled ( ) ;
261+ expect ( getLogErrorMock ( deps ) ) . toHaveBeenCalled ( ) ;
264262 } ) ;
265263
266264 it ( "throws when patch letter lambda returns function error" , async ( ) => {
267265 const deps = makeDeps ( ) ;
268- jest
269- . mocked ( deps . ssmClient . send )
266+ getSsmSendMock ( deps )
270267 . mockResolvedValueOnce ( { Parameter : { Value : "200" } } )
271268 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
272269
273- jest
274- . mocked ( deps . lambdaClient . send )
270+ getLambdaSendMock ( deps )
275271 . mockResolvedValueOnce ( {
276272 Payload : Buffer . from (
277273 JSON . stringify ( {
@@ -291,18 +287,16 @@ describe("Supplier Mock Lambda", () => {
291287 await expect ( handler ( ) ) . rejects . toThrow (
292288 "patch_letter lambda invocation failed for letter letter-3" ,
293289 ) ;
294- expect ( jest . mocked ( deps . logger . error ) ) . toHaveBeenCalled ( ) ;
290+ expect ( getLogErrorMock ( deps ) ) . toHaveBeenCalled ( ) ;
295291 } ) ;
296292
297293 it ( "throws when patch letter lambda returns function error without payload" , async ( ) => {
298294 const deps = makeDeps ( ) ;
299- jest
300- . mocked ( deps . ssmClient . send )
295+ getSsmSendMock ( deps )
301296 . mockResolvedValueOnce ( { Parameter : { Value : "200" } } )
302297 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
303298
304- jest
305- . mocked ( deps . lambdaClient . send )
299+ getLambdaSendMock ( deps )
306300 . mockResolvedValueOnce ( {
307301 Payload : Buffer . from (
308302 JSON . stringify ( {
@@ -321,21 +315,18 @@ describe("Supplier Mock Lambda", () => {
321315 await expect ( handler ( ) ) . rejects . toThrow (
322316 "patch_letter lambda invocation failed for letter letter-4" ,
323317 ) ;
324- expect ( jest . mocked ( deps . logger . error ) ) . toHaveBeenCalled ( ) ;
318+ expect ( getLogErrorMock ( deps ) ) . toHaveBeenCalled ( ) ;
325319 } ) ;
326320
327321 it ( "handles get letters response with no body by returning no letters" , async ( ) => {
328322 const deps = makeDeps ( ) ;
329- jest
330- . mocked ( deps . ssmClient . send )
323+ getSsmSendMock ( deps )
331324 . mockResolvedValueOnce ( { Parameter : { Value : "200" } } )
332325 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
333326
334- const lambdaSend = jest
335- . mocked ( deps . lambdaClient . send )
336- . mockResolvedValueOnce ( {
337- Payload : Buffer . from ( JSON . stringify ( { statusCode : 200 } ) ) ,
338- } ) ;
327+ const lambdaSend = getLambdaSendMock ( deps ) . mockResolvedValueOnce ( {
328+ Payload : Buffer . from ( JSON . stringify ( { statusCode : 200 } ) ) ,
329+ } ) ;
339330
340331 const handler = createHandler ( deps ) ;
341332 await expect ( handler ( ) ) . resolves . toBeUndefined ( ) ;
@@ -344,12 +335,11 @@ describe("Supplier Mock Lambda", () => {
344335
345336 it ( "sends the expected parameter names to SSM" , async ( ) => {
346337 const deps = makeDeps ( ) ;
347- const ssmSend = jest
348- . mocked ( deps . ssmClient . send )
338+ const ssmSend = getSsmSendMock ( deps )
349339 . mockResolvedValueOnce ( { Parameter : { Value : "200" } } )
350340 . mockResolvedValueOnce ( { Parameter : { Value : "SupplierA" } } ) ;
351341
352- jest . mocked ( deps . lambdaClient . send ) . mockResolvedValueOnce ( {
342+ getLambdaSendMock ( deps ) . mockResolvedValueOnce ( {
353343 Payload : Buffer . from (
354344 JSON . stringify ( {
355345 statusCode : 200 ,
0 commit comments