Skip to content

Commit f604335

Browse files
committed
Tidy up test compositions
1 parent 0cae9c1 commit f604335

2 files changed

Lines changed: 33 additions & 44 deletions

File tree

functions/src/jobs/slackFileArchiveCronJeb.test.ts renamed to functions/src/jobs/slackFileArchiveCronJob.test.ts

Lines changed: 32 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,34 @@
1-
1+
import {slackFileArchiveCronJob} from './slackFileArchiveCronJob';
22
import firebaseFunctionsTest from 'firebase-functions-test';
3+
import {vi} from 'vitest';
34

45
process.env.SLACK_TOKEN = 'xoxb-slacktoken';
56
process.env.AWS_ACCESS_KEY_ID = 'ACCESS-KEY-ID';
67
process.env.AWS_SECRET_ACCESS_KEY = 'SECRET-ACCESS-KEY';
78

89
const test = firebaseFunctionsTest();
910

10-
const filesListMock = vi.hoisted(() => vi.fn());
11+
const filesList = vi.hoisted(() => vi.fn());
12+
const batchGet = vi.hoisted(() => vi.fn());
13+
const batchWrite = vi.hoisted(() => vi.fn());
1114

1215
vi.mock('axios');
1316
vi.mock('@slack/web-api', () => ({
14-
WebClient: vi.fn(function(this: any) {
15-
this.files = {
16-
list: filesListMock,
17+
WebClient: class {
18+
files = {
19+
list: filesList,
1720
};
18-
}),
21+
},
22+
}));
23+
vi.mock('aws-sdk', () => ({
24+
DynamoDB: {
25+
DocumentClient: class {
26+
batchGet = batchGet;
27+
batchWrite = batchWrite;
28+
},
29+
},
30+
S3: class {},
1931
}));
20-
vi.mock('aws-sdk', () => {
21-
class DocumentClient {
22-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
23-
batchGet(_params: unknown) { return {promise: vi.fn()}; }
24-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
25-
batchWrite(_params: unknown) { return {promise: vi.fn()}; }
26-
}
27-
class S3 {
28-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
29-
putObject(_params: unknown) { return {promise: vi.fn()}; }
30-
}
31-
return {DynamoDB: {DocumentClient}, S3};
32-
});
33-
34-
import {DynamoDB} from 'aws-sdk';
35-
36-
import {slackFileArchiveCronJob} from './slackFileArchiveCronJob';
3732

3833
const cronJob = test.wrap(slackFileArchiveCronJob);
3934

@@ -48,7 +43,7 @@ describe('slackFileArchiveCronJob', () => {
4843
vi.useFakeTimers();
4944
vi.setSystemTime(CURRENT_TIME * 1000);
5045

51-
filesListMock
46+
filesList
5247
.mockResolvedValueOnce({
5348
files: [{
5449
id: 'file1',
@@ -57,32 +52,26 @@ describe('slackFileArchiveCronJob', () => {
5752
})
5853
.mockResolvedValue({files: []});
5954

60-
const batchGetMock = vi
61-
.spyOn(DynamoDB.DocumentClient.prototype, 'batchGet')
62-
// @ts-ignore
63-
.mockImplementation(() => ({
64-
promise: vi.fn().mockResolvedValue({
65-
Responses: {
66-
'slack-files': [{
67-
id: 'file1',
68-
}],
69-
},
70-
}),
71-
}));
55+
const batchGetMock = batchGet.mockReturnValue({
56+
promise: vi.fn().mockResolvedValue({
57+
Responses: {
58+
'slack-files': [{
59+
id: 'file1',
60+
}],
61+
},
62+
}),
63+
});
7264

73-
const batchWriteMock = vi
74-
.spyOn(DynamoDB.DocumentClient.prototype, 'batchWrite')
75-
// @ts-ignore
76-
.mockImplementation(() => ({
77-
promise: vi.fn(),
78-
}));
65+
const batchWriteMock = batchWrite.mockReturnValue({
66+
promise: vi.fn(),
67+
});
7968

8069
const cronJobPromise = cronJob(undefined);
8170

8271
await vi.runAllTimersAsync();
8372
await cronJobPromise;
8473

85-
expect(filesListMock).toHaveBeenCalledWith({
74+
expect(filesList).toHaveBeenCalledWith({
8675
count: 100,
8776
page: 1,
8877
ts_to: CURRENT_TIME.toString(),

helloworld/HelloWorld.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable import/imports-first, import/first */
22

3-
import * as crypto from 'crypto';
3+
import crypto from 'crypto';
44
import type {MockedStateInterface} from '../lib/__mocks__/state';
55
import Slack from '../lib/slackMock';
66
import State from '../lib/state';

0 commit comments

Comments
 (0)