1
1
import { QueryClient , QueryClientProvider } from '@tanstack/react-query'
2
2
import { render , screen , waitFor } from '@testing-library/react'
3
3
import userEvent from '@testing-library/user-event'
4
- import { graphql , http , HttpResponse } from 'msw'
4
+ import { http , HttpResponse } from 'msw'
5
5
import { setupServer } from 'msw/node'
6
6
import { MemoryRouter , Route } from 'react-router-dom'
7
7
8
8
import 'react-intersection-observer/test-utils'
9
9
10
- import { TrialStatuses } from 'services/account/usePlanData'
11
- import { Plans } from 'shared/utils/billing'
12
-
13
10
import MembersList from './MembersList'
14
11
15
12
const mockNonActiveUserRequest = {
@@ -50,23 +47,6 @@ const mockActiveUserRequest = {
50
47
total_pages : 1 ,
51
48
}
52
49
53
- const mockPlanData = {
54
- isEnterprisePlan : false ,
55
- isProPlan : false ,
56
- isSentryPlan : false ,
57
- isTrialPlan : false ,
58
- baseUnitPrice : 10 ,
59
- benefits : [ ] ,
60
- billingRate : 'monthly' ,
61
- marketingName : 'Users Developer' ,
62
- monthlyUploadLimit : 250 ,
63
- trialStatus : TrialStatuses . NOT_STARTED ,
64
- trialStartDate : '' ,
65
- trialEndDate : '' ,
66
- trialTotalDays : 0 ,
67
- pretrialUsersCount : 0 ,
68
- }
69
-
70
50
const queryClient = new QueryClient ( {
71
51
defaultOptions : { queries : { retry : false } } ,
72
52
} )
@@ -101,11 +81,7 @@ describe('MembersList', () => {
101
81
</ QueryClientProvider >
102
82
)
103
83
104
- function setup ( {
105
- planName = Plans . USERS_DEVELOPER ,
106
- planUserCount = 0 ,
107
- hasSeatsLeft = true ,
108
- } ) {
84
+ function setup ( ) {
109
85
const user = userEvent . setup ( )
110
86
const mockActivateUser = vi . fn ( )
111
87
@@ -118,38 +94,14 @@ describe('MembersList', () => {
118
94
return HttpResponse . json ( mockActiveUserRequest )
119
95
}
120
96
return HttpResponse . json ( mockNonActiveUserRequest )
121
- } ) ,
122
- http . patch ( '/internal/:provider/codecov/users/:ownerid' , ( ) => {
123
- sendActivatedUser = true
124
- mockActivateUser ( )
125
- return HttpResponse . json ( { } )
126
- } ) ,
127
- graphql . query ( 'GetPlanData' , ( ) => {
128
- return HttpResponse . json ( {
129
- data : {
130
- owner : {
131
- hasPrivateRepos : false ,
132
- plan : {
133
- ...mockPlanData ,
134
- value : planName ,
135
- isFreePlan : planName === Plans . USERS_DEVELOPER ,
136
- isTeamPlan :
137
- planName === Plans . USERS_TEAMM ||
138
- planName === Plans . USERS_TEAMY ,
139
- planUserCount,
140
- hasSeatsLeft,
141
- } ,
142
- } ,
143
- } ,
144
- } )
145
97
} )
146
98
)
147
99
148
100
return { user, mockActivateUser }
149
101
}
150
102
151
103
describe ( 'rendering MembersList' , ( ) => {
152
- beforeEach ( ( ) => setup ( { } ) )
104
+ beforeEach ( ( ) => setup ( ) )
153
105
154
106
it ( 'does not render UpgradeModal' , ( ) => {
155
107
render ( < MembersList /> , { wrapper } )
@@ -197,7 +149,7 @@ describe('MembersList', () => {
197
149
describe ( 'interacting with the status selector' , ( ) => {
198
150
describe ( 'selecting Active Users' , ( ) => {
199
151
it ( 'updates select text' , async ( ) => {
200
- const { user } = setup ( { } )
152
+ const { user } = setup ( )
201
153
render ( < MembersList /> , { wrapper } )
202
154
203
155
const select = await screen . findByText ( 'All users' )
@@ -213,7 +165,7 @@ describe('MembersList', () => {
213
165
} )
214
166
215
167
it ( 'updates query params' , async ( ) => {
216
- const { user } = setup ( { } )
168
+ const { user } = setup ( )
217
169
render ( < MembersList /> , { wrapper } )
218
170
219
171
const select = await screen . findByText ( 'All users' )
@@ -230,7 +182,7 @@ describe('MembersList', () => {
230
182
231
183
describe ( 'selecting Inactive Users' , ( ) => {
232
184
it ( 'updates select text' , async ( ) => {
233
- const { user } = setup ( { } )
185
+ const { user } = setup ( )
234
186
render ( < MembersList /> , { wrapper } )
235
187
236
188
const select = await screen . findByText ( 'All users' )
@@ -246,7 +198,7 @@ describe('MembersList', () => {
246
198
} )
247
199
248
200
it ( 'updates query params' , async ( ) => {
249
- const { user } = setup ( { } )
201
+ const { user } = setup ( )
250
202
render ( < MembersList /> , { wrapper } )
251
203
252
204
const select = await screen . findByText ( 'All users' )
@@ -267,7 +219,7 @@ describe('MembersList', () => {
267
219
describe ( 'interacting with the search field' , ( ) => {
268
220
describe ( 'user types into search field' , ( ) => {
269
221
it ( 'updates url params' , async ( ) => {
270
- const { user } = setup ( { } )
222
+ const { user } = setup ( )
271
223
render ( < MembersList /> , { wrapper } )
272
224
273
225
const searchField = await screen . findByTestId ( 'search-input-members' )
@@ -281,7 +233,7 @@ describe('MembersList', () => {
281
233
describe ( 'interacting with the role selector' , ( ) => {
282
234
describe ( 'selecting Admins Users' , ( ) => {
283
235
it ( 'updates select text' , async ( ) => {
284
- const { user } = setup ( { } )
236
+ const { user } = setup ( )
285
237
render ( < MembersList /> , { wrapper } )
286
238
287
239
const select = await screen . findByText ( 'Everyone' )
@@ -297,7 +249,7 @@ describe('MembersList', () => {
297
249
} )
298
250
299
251
it ( 'updates query params' , async ( ) => {
300
- const { user } = setup ( { } )
252
+ const { user } = setup ( )
301
253
render ( < MembersList /> , { wrapper } )
302
254
303
255
const select = screen . getByText ( 'Everyone' )
@@ -312,7 +264,7 @@ describe('MembersList', () => {
312
264
313
265
describe ( 'selecting Developers' , ( ) => {
314
266
it ( 'updates select text' , async ( ) => {
315
- const { user } = setup ( { } )
267
+ const { user } = setup ( )
316
268
render ( < MembersList /> , { wrapper } )
317
269
318
270
const select = await screen . findByText ( 'Everyone' )
@@ -326,7 +278,7 @@ describe('MembersList', () => {
326
278
} )
327
279
328
280
it ( 'updates query params' , async ( ) => {
329
- const { user } = setup ( { } )
281
+ const { user } = setup ( )
330
282
render ( < MembersList /> , { wrapper } )
331
283
332
284
const select = screen . getByText ( 'Everyone' )
@@ -339,123 +291,4 @@ describe('MembersList', () => {
339
291
} )
340
292
} )
341
293
} )
342
-
343
- describe ( 'interacting with user toggles' , ( ) => {
344
- describe ( 'user is on a free plan' , ( ) => {
345
- describe ( 'activated seats is greater then or equal to plan quantity' , ( ) => {
346
- it ( 'opens up upgrade modal' , async ( ) => {
347
- const { user } = setup ( {
348
- hasSeatsLeft : false ,
349
- planUserCount : 1 ,
350
- planName : Plans . USERS_DEVELOPER ,
351
- } )
352
-
353
- render ( < MembersList /> , { wrapper } )
354
-
355
- await waitFor ( ( ) =>
356
- expect ( screen . queryByTestId ( 'spinner' ) ) . not . toBeInTheDocument ( )
357
- )
358
-
359
- const tableHeader = await screen . findByText ( 'Username' )
360
- expect ( tableHeader ) . toBeInTheDocument ( )
361
-
362
- const toggle = await screen . findByLabelText ( 'Non-Active' )
363
- expect ( toggle ) . toBeInTheDocument ( )
364
- await user . click ( toggle )
365
-
366
- const modalHeader = await screen . findByText ( 'Upgrade to Pro' )
367
- expect ( modalHeader ) . toBeInTheDocument ( )
368
- } )
369
- } )
370
-
371
- describe ( 'activated seats is less then or equal to plan quantity' , ( ) => {
372
- it ( 'does not open upgrade modal' , async ( ) => {
373
- const { user } = setup ( {
374
- hasSeatsLeft : true ,
375
- planUserCount : 1 ,
376
- planName : Plans . USERS_DEVELOPER ,
377
- } )
378
- render ( < MembersList /> , { wrapper } )
379
-
380
- await waitFor ( ( ) =>
381
- expect ( screen . queryByTestId ( 'spinner' ) ) . not . toBeInTheDocument ( )
382
- )
383
-
384
- const tableHeader = await screen . findByText ( 'Username' )
385
- expect ( tableHeader ) . toBeInTheDocument ( )
386
-
387
- const toggle = await screen . findByLabelText ( 'Non-Active' )
388
- expect ( toggle ) . toBeInTheDocument ( )
389
- await user . click ( toggle )
390
-
391
- await waitFor ( ( ) =>
392
- expect (
393
- screen . queryByLabelText ( 'Non-Active' )
394
- ) . not . toBeInTheDocument ( )
395
- )
396
-
397
- const activeToggle = await screen . findByText ( 'Activated' )
398
- expect ( activeToggle ) . toBeInTheDocument ( )
399
- } )
400
- } )
401
- } )
402
-
403
- describe ( 'user is not on a free plan' , ( ) => {
404
- describe ( 'activated seats is greater then or equal to plan quantity' , ( ) => {
405
- it ( 'renders disabled toggle' , async ( ) => {
406
- setup ( {
407
- hasSeatsLeft : false ,
408
- planUserCount : 1 ,
409
- planName : Plans . USERS_PR_INAPPY ,
410
- } )
411
-
412
- render ( < MembersList /> , { wrapper } )
413
-
414
- await waitFor ( ( ) =>
415
- expect ( screen . queryByTestId ( 'spinner' ) ) . not . toBeInTheDocument ( )
416
- )
417
-
418
- const tableHeader = await screen . findByText ( 'Username' )
419
- expect ( tableHeader ) . toBeInTheDocument ( )
420
-
421
- const toggle = await screen . findByLabelText ( 'Non-Active' )
422
- expect ( toggle ) . toBeInTheDocument ( )
423
- expect ( toggle ) . toBeDisabled ( )
424
- } )
425
- } )
426
-
427
- describe ( 'activated seats is less then or equal to plan quantity' , ( ) => {
428
- it ( 'calls activate user' , async ( ) => {
429
- const { user, mockActivateUser } = setup ( {
430
- hasSeatsLeft : true ,
431
- planUserCount : 1 ,
432
- planName : Plans . USERS_PR_INAPPY ,
433
- } )
434
- render ( < MembersList /> , { wrapper } )
435
-
436
- await waitFor ( ( ) =>
437
- expect ( screen . queryByTestId ( 'spinner' ) ) . not . toBeInTheDocument ( )
438
- )
439
-
440
- const tableHeader = await screen . findByText ( 'Username' )
441
- expect ( tableHeader ) . toBeInTheDocument ( )
442
-
443
- const toggle = await screen . findByLabelText ( 'Non-Active' )
444
- expect ( toggle ) . toBeInTheDocument ( )
445
- await user . click ( toggle )
446
-
447
- await waitFor ( ( ) =>
448
- expect (
449
- screen . queryByLabelText ( 'Non-Active' )
450
- ) . not . toBeInTheDocument ( )
451
- )
452
-
453
- const activeToggle = await screen . findByText ( 'Activated' )
454
- expect ( activeToggle ) . toBeInTheDocument ( )
455
-
456
- await waitFor ( ( ) => expect ( mockActivateUser ) . toHaveBeenCalled ( ) )
457
- } )
458
- } )
459
- } )
460
- } )
461
294
} )
0 commit comments