1-
1+ import { slackFileArchiveCronJob } from './slackFileArchiveCronJob' ;
22import firebaseFunctionsTest from 'firebase-functions-test' ;
3+ import { vi } from 'vitest' ;
34
45process . env . SLACK_TOKEN = 'xoxb-slacktoken' ;
56process . env . AWS_ACCESS_KEY_ID = 'ACCESS-KEY-ID' ;
67process . env . AWS_SECRET_ACCESS_KEY = 'SECRET-ACCESS-KEY' ;
78
89const 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
1215vi . mock ( 'axios' ) ;
1316vi . 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
3833const 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 ( ) ,
0 commit comments