Skip to content

Commit 3f63afc

Browse files
committed
fix mocks to use vi.mock<...>Value
This is a shorter and better way to set up mocks.
1 parent 82cb27f commit 3f63afc

File tree

1 file changed

+15
-62
lines changed

1 file changed

+15
-62
lines changed

lambdas/functions/control-plane/src/lambda.test.ts

Lines changed: 15 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -93,29 +93,19 @@ describe('Test scale up lambda wrapper.', () => {
9393
});
9494

9595
it('Scale without error should resolve.', async () => {
96-
const mock = vi.fn(scaleUp);
97-
mock.mockImplementation(() => {
98-
return new Promise((resolve) => {
99-
resolve([]);
100-
});
101-
});
96+
vi.mocked(scaleUp).mockResolvedValue([]);
10297
await expect(scaleUpHandler(sqsEvent, context)).resolves.not.toThrow();
10398
});
10499

105100
it('Non scale should resolve.', async () => {
106101
const error = new Error('Non scale should resolve.');
107-
const mock = vi.fn(scaleUp);
108-
mock.mockRejectedValue(error);
102+
vi.mocked(scaleUp).mockRejectedValue(error);
109103
await expect(scaleUpHandler(sqsEvent, context)).resolves.not.toThrow();
110104
});
111105

112106
it('Scale should create a batch failure message', async () => {
113107
const error = new ScaleError();
114-
const mock = vi.fn() as MockedFunction<typeof scaleUp>;
115-
mock.mockImplementation(() => {
116-
return Promise.reject(error);
117-
});
118-
vi.mocked(scaleUp).mockImplementation(mock);
108+
vi.mocked(scaleUp).mockRejectedValue(error);
119109
await expect(scaleUpHandler(sqsEvent, context)).resolves.toEqual({
120110
batchItemFailures: [{ itemIdentifier: sqsRecord.messageId }],
121111
});
@@ -142,9 +132,7 @@ describe('Test scale up lambda wrapper.', () => {
142132
const records = createMultipleRecords(3);
143133
const multiRecordEvent: SQSEvent = { Records: records };
144134

145-
const mock = vi.fn(scaleUp);
146-
mock.mockImplementation(() => Promise.resolve([]));
147-
vi.mocked(scaleUp).mockImplementation(mock);
135+
vi.mocked(scaleUp).mockResolvedValue([]);
148136

149137
await expect(scaleUpHandler(multiRecordEvent, context)).resolves.not.toThrow();
150138
expect(scaleUp).toHaveBeenCalledWith(
@@ -175,9 +163,7 @@ describe('Test scale up lambda wrapper.', () => {
175163
Records: [...sqsRecords, ...nonSqsRecords],
176164
};
177165

178-
const mock = vi.fn(scaleUp);
179-
mock.mockImplementation(() => Promise.resolve([]));
180-
vi.mocked(scaleUp).mockImplementation(mock);
166+
vi.mocked(scaleUp).mockResolvedValue([]);
181167

182168
await scaleUpHandler(mixedEvent, context);
183169
expect(scaleUp).toHaveBeenCalledWith(
@@ -211,15 +197,13 @@ describe('Test scale up lambda wrapper.', () => {
211197
];
212198
const multiRecordEvent: SQSEvent = { Records: records };
213199

214-
const mock = vi.fn(scaleUp);
215-
mock.mockImplementation((messages) => {
200+
vi.mocked(scaleUp).mockImplementation((messages) => {
216201
// Verify messages are sorted by retry count (ascending)
217202
expect(messages[0].messageId).toBe('no-retry');
218203
expect(messages[1].messageId).toBe('low-retry');
219204
expect(messages[2].messageId).toBe('high-retry');
220205
return Promise.resolve([]);
221206
});
222-
vi.mocked(scaleUp).mockImplementation(mock);
223207

224208
await scaleUpHandler(multiRecordEvent, context);
225209
});
@@ -228,9 +212,7 @@ describe('Test scale up lambda wrapper.', () => {
228212
const records = createMultipleRecords(2);
229213
const multiRecordEvent: SQSEvent = { Records: records };
230214

231-
const mock = vi.fn(scaleUp);
232-
mock.mockImplementation(() => Promise.reject(new Error('Generic error')));
233-
vi.mocked(scaleUp).mockImplementation(mock);
215+
vi.mocked(scaleUp).mockRejectedValue(new Error('Generic error'));
234216

235217
const result = await scaleUpHandler(multiRecordEvent, context);
236218
expect(result).toEqual({ batchItemFailures: [] });
@@ -252,41 +234,26 @@ describe('Test scale up lambda wrapper.', () => {
252234

253235
describe('Test scale down lambda wrapper.', () => {
254236
it('Scaling down no error.', async () => {
255-
const mock = vi.fn(scaleDown);
256-
mock.mockImplementation(() => {
257-
return new Promise((resolve) => {
258-
resolve();
259-
});
260-
});
237+
vi.mocked(scaleDown).mockResolvedValue();
261238
await expect(scaleDownHandler({}, context)).resolves.not.toThrow();
262239
});
263240

264241
it('Scaling down with error.', async () => {
265242
const error = new Error('Scaling down with error.');
266-
const mock = vi.fn(scaleDown);
267-
mock.mockRejectedValue(error);
243+
vi.mocked(scaleDown).mockRejectedValue(error);
268244
await expect(scaleDownHandler({}, context)).resolves.not.toThrow();
269245
});
270246
});
271247

272248
describe('Adjust pool.', () => {
273249
it('Receive message to adjust pool.', async () => {
274-
const mock = vi.fn(adjust);
275-
mock.mockImplementation(() => {
276-
return new Promise((resolve) => {
277-
resolve();
278-
});
279-
});
250+
vi.mocked(adjust).mockResolvedValue();
280251
await expect(adjustPool({ poolSize: 2 }, context)).resolves.not.toThrow();
281252
});
282253

283254
it('Handle error for adjusting pool.', async () => {
284255
const error = new Error('Handle error for adjusting pool.');
285-
const mock = vi.fn() as MockedFunction<typeof adjust>;
286-
mock.mockImplementation(() => {
287-
return Promise.reject(error);
288-
});
289-
vi.mocked(adjust).mockImplementation(mock);
256+
vi.mocked(adjust).mockRejectedValue(error);
290257
const logSpy = vi.spyOn(logger, 'error');
291258
await adjustPool({ poolSize: 0 }, context);
292259
expect(logSpy).toHaveBeenCalledWith(`Handle error for adjusting pool. ${error.message}`, { error });
@@ -303,12 +270,7 @@ describe('Test middleware', () => {
303270

304271
describe('Test ssm housekeeper lambda wrapper.', () => {
305272
it('Invoke without errors.', async () => {
306-
const mock = vi.fn(cleanSSMTokens);
307-
mock.mockImplementation(() => {
308-
return new Promise((resolve) => {
309-
resolve();
310-
});
311-
});
273+
vi.mocked(cleanSSMTokens).mockResolvedValue();
312274

313275
process.env.SSM_CLEANUP_CONFIG = JSON.stringify({
314276
dryRun: false,
@@ -320,29 +282,20 @@ describe('Test ssm housekeeper lambda wrapper.', () => {
320282
});
321283

322284
it('Errors not throws.', async () => {
323-
const mock = vi.fn(cleanSSMTokens);
324-
mock.mockRejectedValue(new Error());
285+
vi.mocked(cleanSSMTokens).mockRejectedValue(new Error());
325286
await expect(ssmHousekeeper({}, context)).resolves.not.toThrow();
326287
});
327288
});
328289

329290
describe('Test job retry check wrapper', () => {
330291
it('Handle without error should resolve.', async () => {
331-
const mock = vi.fn() as MockedFunction<typeof checkAndRetryJob>;
332-
mock.mockImplementation(() => {
333-
return Promise.resolve();
334-
});
335-
vi.mocked(checkAndRetryJob).mockImplementation(mock);
292+
vi.mocked(checkAndRetryJob).mockResolvedValue();
336293
await expect(jobRetryCheck(sqsEvent, context)).resolves.not.toThrow();
337294
});
338295

339296
it('Handle with error should resolve and log only a warning.', async () => {
340297
const error = new Error('Error handling retry check.');
341-
const mock = vi.fn() as MockedFunction<typeof checkAndRetryJob>;
342-
mock.mockImplementation(() => {
343-
return Promise.reject(error);
344-
});
345-
vi.mocked(checkAndRetryJob).mockImplementation(mock);
298+
vi.mocked(checkAndRetryJob).mockRejectedValue(error);
346299

347300
const logSpyWarn = vi.spyOn(logger, 'warn');
348301
await expect(jobRetryCheck(sqsEvent, context)).resolves.not.toThrow();

0 commit comments

Comments
 (0)