1
1
import * as github from '@actions/github'
2
2
import { afterEach , beforeEach , describe , expect , it , jest } from '@jest/globals'
3
3
import {
4
- getMessageAuthor ,
4
+ GetMessageAuthor ,
5
+ getMessageAuthorFactory ,
5
6
GH_MERGE_QUEUE_BOT_USERNAME
6
- } from '../getMessageAuthor '
7
+ } from '../getMessageAuthorFactory '
7
8
import { OctokitClient } from '../github/types'
8
9
import { SlackClient } from '../slack/SlackClient'
9
10
import { Member , MessageAuthor } from '../slack/types'
10
11
11
- describe ( 'getMessageAuthor' , ( ) => {
12
+ describe ( 'getMessageAuthorFactory' , ( ) => {
13
+ let getMessageAuthor : GetMessageAuthor
14
+
12
15
let octokit : OctokitClient
13
16
let slack : SlackClient
14
17
let messageAuthor : MessageAuthor | null
@@ -55,6 +58,8 @@ describe('getMessageAuthor', () => {
55
58
slack = {
56
59
getRealUsers : jest . fn ( )
57
60
} as unknown as SlackClient
61
+
62
+ getMessageAuthor = getMessageAuthorFactory ( octokit , slack )
58
63
} )
59
64
60
65
afterEach ( ( ) => {
@@ -64,7 +69,7 @@ describe('getMessageAuthor', () => {
64
69
65
70
describe ( 'missing Slack OAuth scope' , ( ) => {
66
71
beforeEach ( async ( ) => {
67
- messageAuthor = await getMessageAuthor ( octokit , slack )
72
+ messageAuthor = await getMessageAuthor ( { withSlackUserId : true } )
68
73
} )
69
74
70
75
it ( 'should fetch Slack users' , ( ) => {
@@ -79,6 +84,23 @@ describe('getMessageAuthor', () => {
79
84
} )
80
85
} )
81
86
87
+ describe ( 'without Slack user ID' , ( ) => {
88
+ beforeEach ( async ( ) => {
89
+ messageAuthor = await getMessageAuthor ( { withSlackUserId : false } )
90
+ } )
91
+
92
+ it ( 'should not fetch Slack users' , ( ) => {
93
+ expect ( slack . getRealUsers ) . not . toHaveBeenCalled ( )
94
+ } )
95
+
96
+ it ( 'should return GitHub username' , ( ) => {
97
+ expect ( messageAuthor ) . toStrictEqual ( {
98
+ username : 'namoscato' ,
99
+ icon_url : 'github.com/namoscato'
100
+ } )
101
+ } )
102
+ } )
103
+
82
104
describe ( 'Slack user not found' , ( ) => {
83
105
beforeEach ( async ( ) => {
84
106
jest . mocked ( slack . getRealUsers ) . mockReturnValue (
@@ -103,7 +125,7 @@ describe('getMessageAuthor', () => {
103
125
104
126
describe ( 'with GitHub context' , ( ) => {
105
127
beforeEach ( async ( ) => {
106
- messageAuthor = await getMessageAuthor ( octokit , slack )
128
+ messageAuthor = await getMessageAuthor ( { withSlackUserId : true } )
107
129
} )
108
130
109
131
it ( 'should fallback to GitHub username' , ( ) => {
@@ -115,7 +137,7 @@ describe('getMessageAuthor', () => {
115
137
beforeEach ( async ( ) => {
116
138
github . context . payload = { }
117
139
118
- messageAuthor = await getMessageAuthor ( octokit , slack )
140
+ messageAuthor = await getMessageAuthor ( { withSlackUserId : true } )
119
141
} )
120
142
121
143
it ( 'should return null' , ( ) => {
@@ -147,7 +169,7 @@ describe('getMessageAuthor', () => {
147
169
] )
148
170
)
149
171
150
- messageAuthor = await getMessageAuthor ( octokit , slack )
172
+ messageAuthor = await getMessageAuthor ( { withSlackUserId : true } )
151
173
} )
152
174
153
175
it ( 'should fallback to GitHub username' , ( ) => {
@@ -178,7 +200,7 @@ describe('getMessageAuthor', () => {
178
200
] )
179
201
)
180
202
181
- messageAuthor = await getMessageAuthor ( octokit , slack )
203
+ messageAuthor = await getMessageAuthor ( { withSlackUserId : true } )
182
204
} )
183
205
184
206
it ( 'should return Slack user' , ( ) => {
@@ -224,7 +246,7 @@ describe('getMessageAuthor', () => {
224
246
] )
225
247
)
226
248
227
- messageAuthor = await getMessageAuthor ( octokit , slack )
249
+ messageAuthor = await getMessageAuthor ( { withSlackUserId : true } )
228
250
} )
229
251
230
252
it ( 'fetches the GH user that merged the PR' , ( ) => {
@@ -258,7 +280,7 @@ describe('getMessageAuthor', () => {
258
280
} )
259
281
260
282
it ( 'does not fallback on the merge queue user' , async ( ) => {
261
- expect ( await getMessageAuthor ( octokit , slack ) ) . toStrictEqual ( {
283
+ expect ( await getMessageAuthor ( { withSlackUserId : true } ) ) . toStrictEqual ( {
262
284
username : 'mdavis' ,
263
285
icon_url : 'github.com/mdavis'
264
286
} )
@@ -271,9 +293,9 @@ describe('getMessageAuthor', () => {
271
293
} )
272
294
273
295
it ( 'falls back on merge queue user' , async ( ) => {
274
- expect ( ( await getMessageAuthor ( octokit , slack ) ) ?. username ) . toBe (
275
- GH_MERGE_QUEUE_BOT_USERNAME
276
- )
296
+ expect (
297
+ ( await getMessageAuthor ( { withSlackUserId : true } ) ) ?. username
298
+ ) . toBe ( GH_MERGE_QUEUE_BOT_USERNAME )
277
299
} )
278
300
} )
279
301
@@ -286,7 +308,7 @@ describe('getMessageAuthor', () => {
286
308
} )
287
309
288
310
it ( 'does not fallback on the merge queue user' , async ( ) => {
289
- expect ( await getMessageAuthor ( octokit , slack ) ) . toStrictEqual ( {
311
+ expect ( await getMessageAuthor ( { withSlackUserId : true } ) ) . toStrictEqual ( {
290
312
username : 'mdavis' ,
291
313
icon_url : 'github.com/mdavis'
292
314
} )
@@ -303,9 +325,9 @@ describe('getMessageAuthor', () => {
303
325
} )
304
326
305
327
it ( 'falls back on merge queue user' , async ( ) => {
306
- expect ( ( await getMessageAuthor ( octokit , slack ) ) ?. username ) . toBe (
307
- GH_MERGE_QUEUE_BOT_USERNAME
308
- )
328
+ expect (
329
+ ( await getMessageAuthor ( { withSlackUserId : true } ) ) ?. username
330
+ ) . toBe ( GH_MERGE_QUEUE_BOT_USERNAME )
309
331
} )
310
332
} )
311
333
} )
0 commit comments