11import { captureLambdaHandler , logger } from '@aws-github-runner/aws-powertools-util' ;
22import { Context , SQSEvent , SQSRecord } from 'aws-lambda' ;
3- import { mocked } from 'jest-mock' ;
43
54import { addMiddleware , adjustPool , scaleDownHandler , scaleUpHandler , ssmHousekeeper , jobRetryCheck } from './lambda' ;
65import { adjust } from './pool/pool' ;
@@ -80,7 +79,7 @@ describe('Test scale up lambda wrapper.', () => {
8079 } ) ;
8180
8281 it ( 'Scale without error should resolve.' , async ( ) => {
83- const mock = mocked ( scaleUp ) ;
82+ const mock = vi . fn ( scaleUp ) ;
8483 mock . mockImplementation ( ( ) => {
8584 return new Promise ( ( resolve ) => {
8685 resolve ( ) ;
@@ -91,21 +90,24 @@ describe('Test scale up lambda wrapper.', () => {
9190
9291 it ( 'Non scale should resolve.' , async ( ) => {
9392 const error = new Error ( 'Non scale should resolve.' ) ;
94- const mock = mocked ( scaleUp ) ;
93+ const mock = vi . fn ( scaleUp ) ;
9594 mock . mockRejectedValue ( error ) ;
96- await expect ( scaleUpHandler ( sqsEvent , context ) ) . resolves . not . toThrow ;
95+ await expect ( scaleUpHandler ( sqsEvent , context ) ) . resolves . not . toThrow ( ) ;
9796 } ) ;
9897
9998 it ( 'Scale should be rejected' , async ( ) => {
10099 const error = new ScaleError ( 'Scale should be rejected' ) ;
101- const mock = mocked ( scaleUp ) ;
102- mock . mockRejectedValue ( error ) ;
100+ const mock = vi . fn ( ) as MockedFunction < typeof scaleUp > ;
101+ mock . mockImplementation ( ( ) => {
102+ return Promise . reject ( error ) ;
103+ } ) ;
104+ vi . mocked ( scaleUp ) . mockImplementation ( mock ) ;
103105 await expect ( scaleUpHandler ( sqsEvent , context ) ) . rejects . toThrow ( error ) ;
104106 } ) ;
105107} ) ;
106108
107109async function testInvalidRecords ( sqsRecords : SQSRecord [ ] ) {
108- const mock = mocked ( scaleUp ) ;
110+ const mock = vi . fn ( scaleUp ) ;
109111 const logWarnSpy = vi . spyOn ( logger , 'warn' ) ;
110112 mock . mockImplementation ( ( ) => {
111113 return new Promise ( ( resolve ) => {
@@ -127,7 +129,7 @@ async function testInvalidRecords(sqsRecords: SQSRecord[]) {
127129
128130describe ( 'Test scale down lambda wrapper.' , ( ) => {
129131 it ( 'Scaling down no error.' , async ( ) => {
130- const mock = mocked ( scaleDown ) ;
132+ const mock = vi . fn ( scaleDown ) ;
131133 mock . mockImplementation ( ( ) => {
132134 return new Promise ( ( resolve ) => {
133135 resolve ( ) ;
@@ -138,15 +140,15 @@ describe('Test scale down lambda wrapper.', () => {
138140
139141 it ( 'Scaling down with error.' , async ( ) => {
140142 const error = new Error ( 'Scaling down with error.' ) ;
141- const mock = mocked ( scaleDown ) ;
143+ const mock = vi . fn ( scaleDown ) ;
142144 mock . mockRejectedValue ( error ) ;
143145 await expect ( scaleDownHandler ( { } , context ) ) . resolves . not . toThrow ( ) ;
144146 } ) ;
145147} ) ;
146148
147149describe ( 'Adjust pool.' , ( ) => {
148150 it ( 'Receive message to adjust pool.' , async ( ) => {
149- const mock = mocked ( adjust ) ;
151+ const mock = vi . fn ( adjust ) ;
150152 mock . mockImplementation ( ( ) => {
151153 return new Promise ( ( resolve ) => {
152154 resolve ( ) ;
@@ -156,12 +158,15 @@ describe('Adjust pool.', () => {
156158 } ) ;
157159
158160 it ( 'Handle error for adjusting pool.' , async ( ) => {
159- const mock = mocked ( adjust ) ;
160161 const error = new Error ( 'Handle error for adjusting pool.' ) ;
161- mock . mockRejectedValue ( error ) ;
162+ const mock = vi . fn ( ) as MockedFunction < typeof adjust > ;
163+ mock . mockImplementation ( ( ) => {
164+ return Promise . reject ( error ) ;
165+ } ) ;
166+ vi . mocked ( adjust ) . mockImplementation ( mock ) ;
162167 const logSpy = vi . spyOn ( logger , 'error' ) ;
163168 await adjustPool ( { poolSize : 0 } , context ) ;
164- expect ( logSpy ) . lastCalledWith ( expect . stringContaining ( error . message ) , expect . anything ( ) ) ;
169+ expect ( logSpy ) . toHaveBeenCalledWith ( `Handle error for adjusting pool. ${ error . message } ` , { error } ) ;
165170 } ) ;
166171} ) ;
167172
@@ -175,7 +180,7 @@ describe('Test middleware', () => {
175180
176181describe ( 'Test ssm housekeeper lambda wrapper.' , ( ) => {
177182 it ( 'Invoke without errors.' , async ( ) => {
178- const mock = mocked ( cleanSSMTokens ) ;
183+ const mock = vi . fn ( cleanSSMTokens ) ;
179184 mock . mockImplementation ( ( ) => {
180185 return new Promise ( ( resolve ) => {
181186 resolve ( ) ;
@@ -192,31 +197,32 @@ describe('Test ssm housekeeper lambda wrapper.', () => {
192197 } ) ;
193198
194199 it ( 'Errors not throws.' , async ( ) => {
195- const mock = mocked ( cleanSSMTokens ) ;
200+ const mock = vi . fn ( cleanSSMTokens ) ;
196201 mock . mockRejectedValue ( new Error ( ) ) ;
197202 await expect ( ssmHousekeeper ( { } , context ) ) . resolves . not . toThrow ( ) ;
198203 } ) ;
199204} ) ;
200205
201206describe ( 'Test job retry check wrapper' , ( ) => {
202207 it ( 'Handle without error should resolve.' , async ( ) => {
203- const mock = mocked ( checkAndRetryJob ) ;
208+ const mock = vi . fn ( ) as MockedFunction < typeof checkAndRetryJob > ;
204209 mock . mockImplementation ( ( ) => {
205- return new Promise ( ( resolve ) => {
206- resolve ( ) ;
207- } ) ;
210+ return Promise . resolve ( ) ;
208211 } ) ;
212+ vi . mocked ( checkAndRetryJob ) . mockImplementation ( mock ) ;
209213 await expect ( jobRetryCheck ( sqsEvent , context ) ) . resolves . not . toThrow ( ) ;
210214 } ) ;
211215
212216 it ( 'Handle with error should resolve and log only a warning.' , async ( ) => {
213- const logSpyWarn = vi . spyOn ( logger , 'warn' ) ;
214-
215- const mock = mocked ( checkAndRetryJob ) ;
216217 const error = new Error ( 'Error handling retry check.' ) ;
217- mock . mockRejectedValue ( error ) ;
218+ const mock = vi . fn ( ) as MockedFunction < typeof checkAndRetryJob > ;
219+ mock . mockImplementation ( ( ) => {
220+ return Promise . reject ( error ) ;
221+ } ) ;
222+ vi . mocked ( checkAndRetryJob ) . mockImplementation ( mock ) ;
218223
224+ const logSpyWarn = vi . spyOn ( logger , 'warn' ) ;
219225 await expect ( jobRetryCheck ( sqsEvent , context ) ) . resolves . not . toThrow ( ) ;
220- expect ( logSpyWarn ) . toHaveBeenCalledWith ( expect . stringContaining ( error . message ) , expect . anything ( ) ) ;
226+ expect ( logSpyWarn ) . toHaveBeenCalledWith ( `Error processing job retry: ${ error . message } ` , { error } ) ;
221227 } ) ;
222228} ) ;
0 commit comments