@@ -9,6 +9,8 @@ import { setupServer } from 'msw/node'
9
9
import { Suspense } from 'react'
10
10
import { MemoryRouter , Route } from 'react-router-dom'
11
11
12
+ import config from 'config'
13
+
12
14
import CoverageOverviewTab from './OverviewTab'
13
15
14
16
declare global {
@@ -17,6 +19,8 @@ declare global {
17
19
}
18
20
}
19
21
22
+ vi . mock ( 'config' )
23
+
20
24
vi . mock ( 'recharts' , async ( ) => {
21
25
const OriginalModule = await vi . importActual ( 'recharts' )
22
26
return {
@@ -35,22 +39,6 @@ vi.mock('./SummaryTeamPlan', () => ({ default: () => 'SummaryTeamPlan' }))
35
39
vi . mock ( './subroute/Sunburst' , ( ) => ( { default : ( ) => 'Sunburst' } ) )
36
40
vi . mock ( './subroute/Fileviewer' , ( ) => ( { default : ( ) => 'FileViewer' } ) )
37
41
38
- const mockRepoSettings = ( isPrivate = false ) => ( {
39
- owner : {
40
- isCurrentUserPartOfOrg : true ,
41
- repository : {
42
- defaultBranch : 'master' ,
43
- private : isPrivate ,
44
- uploadToken : 'token' ,
45
- graphToken : 'token' ,
46
- yaml : 'yaml' ,
47
- bot : {
48
- username : 'test' ,
49
- } ,
50
- } ,
51
- } ,
52
- } )
53
-
54
42
const mockRepo = ( isPrivate = false , isFirstPullRequest = false ) => ( {
55
43
owner : {
56
44
isCurrentUserPartOfOrg : true ,
@@ -268,6 +256,24 @@ const mockBackfillFlag = {
268
256
} ,
269
257
}
270
258
259
+ const mockRepoSettingsTeamData = ( isPrivate = false ) => ( {
260
+ owner : {
261
+ isCurrentUserPartOfOrg : null ,
262
+ repository : {
263
+ __typename : 'Repository' ,
264
+ defaultBranch : 'master' ,
265
+ private : isPrivate ,
266
+ uploadToken : 'token' ,
267
+ graphToken : 'token' ,
268
+ yaml : 'yaml' ,
269
+ bot : {
270
+ username : 'test' ,
271
+ } ,
272
+ activated : true ,
273
+ } ,
274
+ } ,
275
+ } )
276
+
271
277
const server = setupServer ( )
272
278
const queryClient = new QueryClient ( {
273
279
defaultOptions : { queries : { retry : false } } ,
@@ -326,6 +332,7 @@ beforeEach(() => {
326
332
} )
327
333
328
334
afterEach ( ( ) => {
335
+ vi . clearAllMocks ( )
329
336
queryClient . clear ( )
330
337
queryClientV5 . clear ( )
331
338
server . resetHandlers ( )
@@ -340,6 +347,7 @@ interface SetupArgs {
340
347
isPrivate ?: boolean
341
348
isTeamPlan ?: boolean
342
349
fileCount ?: number
350
+ sunburstEnabled ?: boolean
343
351
}
344
352
345
353
describe ( 'Coverage overview tab' , ( ) => {
@@ -348,7 +356,10 @@ describe('Coverage overview tab', () => {
348
356
isPrivate = false ,
349
357
isTeamPlan = false ,
350
358
fileCount = 10 ,
359
+ sunburstEnabled = true ,
351
360
} : SetupArgs ) {
361
+ config . SUNBURST_ENABLED = sunburstEnabled
362
+
352
363
server . use (
353
364
graphql . query ( 'GetRepo' , ( ) => {
354
365
return HttpResponse . json ( {
@@ -389,7 +400,7 @@ describe('Coverage overview tab', () => {
389
400
} )
390
401
} ) ,
391
402
graphql . query ( 'GetRepoSettingsTeam' , ( ) => {
392
- return HttpResponse . json ( { data : mockRepoSettings ( isPrivate ) } )
403
+ return HttpResponse . json ( { data : mockRepoSettingsTeamData ( isPrivate ) } )
393
404
} ) ,
394
405
graphql . query ( 'CoverageTabData' , ( ) => {
395
406
return HttpResponse . json ( { data : mockCoverageTabData ( fileCount ) } )
@@ -426,33 +437,69 @@ describe('Coverage overview tab', () => {
426
437
expect ( summary ) . toBeInTheDocument ( )
427
438
} )
428
439
429
- describe ( 'file count is under 200_000' , ( ) => {
430
- it ( 'renders the sunburst chart' , async ( ) => {
431
- setup ( { fileCount : 100 } )
432
- render ( < CoverageOverviewTab /> , {
433
- wrapper : wrapper ( [ '/gh/test-org/repoName' ] ) ,
440
+ describe ( 'rendering sunburst' , ( ) => {
441
+ describe ( 'file count is under 200_000' , ( ) => {
442
+ describe ( 'sunburst is enabled' , ( ) => {
443
+ it ( 'renders the sunburst chart' , async ( ) => {
444
+ setup ( { fileCount : 100 , sunburstEnabled : true } )
445
+ render ( < CoverageOverviewTab /> , {
446
+ wrapper : wrapper ( [ '/gh/test-org/repoName' ] ) ,
447
+ } )
448
+
449
+ const hideChart = await screen . findByText ( / H i d e c h a r t s / )
450
+ expect ( hideChart ) . toBeInTheDocument ( )
451
+
452
+ const sunburst = await screen . findByText ( 'Sunburst' )
453
+ expect ( sunburst ) . toBeInTheDocument ( )
454
+ } )
434
455
} )
435
456
436
- const hideChart = await screen . findByText ( / H i d e c h a r t s / )
437
- expect ( hideChart ) . toBeInTheDocument ( )
457
+ describe ( 'sunburst is disabled' , ( ) => {
458
+ it ( 'does not render the sunburst chart' , async ( ) => {
459
+ setup ( { fileCount : 100 , sunburstEnabled : false } )
460
+ render ( < CoverageOverviewTab /> , {
461
+ wrapper : wrapper ( [ '/gh/test-org/repoName' ] ) ,
462
+ } )
438
463
439
- const sunburst = await screen . findByText ( 'Sunburst' )
440
- expect ( sunburst ) . toBeInTheDocument ( )
464
+ const hideChart = await screen . findByText ( / H i d e c h a r t s / )
465
+ expect ( hideChart ) . toBeInTheDocument ( )
466
+
467
+ const sunburst = screen . queryByText ( 'Sunburst' )
468
+ await waitFor ( ( ) => expect ( sunburst ) . not . toBeInTheDocument ( ) )
469
+ } )
470
+ } )
441
471
} )
442
- } )
443
472
444
- describe ( 'file count is above 200_000' , ( ) => {
445
- it ( 'does not render the sunburst chart' , async ( ) => {
446
- setup ( { fileCount : 500_000 } )
447
- render ( < CoverageOverviewTab /> , {
448
- wrapper : wrapper ( [ '/gh/test-org/repoName' ] ) ,
473
+ describe ( 'file count is above 200_000' , ( ) => {
474
+ describe ( 'sunburst is enabled' , ( ) => {
475
+ it ( 'does not render the sunburst chart' , async ( ) => {
476
+ setup ( { fileCount : 500_000 , sunburstEnabled : true } )
477
+ render ( < CoverageOverviewTab /> , {
478
+ wrapper : wrapper ( [ '/gh/test-org/repoName' ] ) ,
479
+ } )
480
+
481
+ const hideChart = await screen . findByText ( / H i d e c h a r t s / )
482
+ expect ( hideChart ) . toBeInTheDocument ( )
483
+
484
+ const sunburst = screen . queryByText ( 'Sunburst' )
485
+ await waitFor ( ( ) => expect ( sunburst ) . not . toBeInTheDocument ( ) )
486
+ } )
449
487
} )
450
488
451
- const hideChart = await screen . findByText ( / H i d e c h a r t s / )
452
- expect ( hideChart ) . toBeInTheDocument ( )
489
+ describe ( 'sunburst is disabled' , ( ) => {
490
+ it ( 'does not render the sunburst chart' , async ( ) => {
491
+ setup ( { fileCount : 500_000 , sunburstEnabled : false } )
492
+ render ( < CoverageOverviewTab /> , {
493
+ wrapper : wrapper ( [ '/gh/test-org/repoName' ] ) ,
494
+ } )
453
495
454
- const sunburst = screen . queryByText ( 'Sunburst' )
455
- await waitFor ( ( ) => expect ( sunburst ) . not . toBeInTheDocument ( ) )
496
+ const hideChart = await screen . findByText ( / H i d e c h a r t s / )
497
+ expect ( hideChart ) . toBeInTheDocument ( )
498
+
499
+ const sunburst = screen . queryByText ( 'Sunburst' )
500
+ await waitFor ( ( ) => expect ( sunburst ) . not . toBeInTheDocument ( ) )
501
+ } )
502
+ } )
456
503
} )
457
504
} )
458
505
0 commit comments