@@ -5,6 +5,8 @@ import { setupServer } from 'msw/node'
5
5
import { Suspense } from 'react'
6
6
import { MemoryRouter , Route } from 'react-router-dom'
7
7
8
+ import { Plans } from 'shared/utils/billing'
9
+
8
10
import TokenlessBanner from './TokenlessBanner'
9
11
10
12
const mocks = vi . hoisted ( ( ) => ( {
@@ -15,6 +17,8 @@ vi.mock('shared/featureFlags', () => ({
15
17
useFlags : mocks . useFlags ,
16
18
} ) )
17
19
20
+ vi . mock ( 'services/users' )
21
+
18
22
vi . mock ( './TokenRequiredBanner' , ( ) => ( {
19
23
default : ( ) => 'TokenRequiredBanner' ,
20
24
} ) )
@@ -41,6 +45,50 @@ afterAll(() => {
41
45
server . close ( )
42
46
} )
43
47
48
+ const mockSignedInUser = {
49
+ me : {
50
+ owner : {
51
+ defaultOrgUsername : 'codecov' ,
52
+ } ,
53
+
54
+ privateAccess : true ,
55
+ onboardingCompleted : true ,
56
+ businessEmail :
'[email protected] ' ,
57
+ termsAgreement : true ,
58
+ user : {
59
+ name : 'Jane Doe' ,
60
+ username : 'janedoe' ,
61
+ avatarUrl : 'http://127.0.0.1/avatar-url' ,
62
+ avatar : 'http://127.0.0.1/avatar-url' ,
63
+ student : false ,
64
+ studentCreatedAt : null ,
65
+ studentUpdatedAt : null ,
66
+ customerIntent : 'PERSONAL' ,
67
+ } ,
68
+ trackingMetadata : {
69
+ service : 'github' ,
70
+ ownerid : 123 ,
71
+ serviceId : '123' ,
72
+ plan : Plans . USERS_BASIC ,
73
+ staff : false ,
74
+ hasYaml : false ,
75
+ bot : null ,
76
+ delinquent : null ,
77
+ didTrial : null ,
78
+ planProvider : null ,
79
+ planUserCount : 1 ,
80
+ createdAt : 'timestamp' ,
81
+ updatedAt : 'timestamp' ,
82
+ profile : {
83
+ createdAt : 'timestamp' ,
84
+ otherGoal : null ,
85
+ typeProjects : [ ] ,
86
+ goals : [ ] ,
87
+ } ,
88
+ } ,
89
+ } ,
90
+ }
91
+
44
92
const wrapper =
45
93
( initialEntries = [ '/gh/codecov' ] ) : React . FC < React . PropsWithChildren > =>
46
94
( { children } ) => (
@@ -57,9 +105,11 @@ describe('TokenlessBanner', () => {
57
105
function setup ( {
58
106
tokenlessSection = true ,
59
107
uploadTokenRequired = false ,
108
+ currentUser,
60
109
} : {
61
110
tokenlessSection ?: boolean
62
111
uploadTokenRequired ?: boolean
112
+ currentUser ?: any
63
113
} = { } ) {
64
114
mocks . useFlags . mockReturnValue ( { tokenlessSection } )
65
115
@@ -74,12 +124,15 @@ describe('TokenlessBanner', () => {
74
124
} ,
75
125
} ,
76
126
} )
127
+ } ) ,
128
+ graphql . query ( 'CurrentUser' , ( ) => {
129
+ return HttpResponse . json ( { data : currentUser } )
77
130
} )
78
131
)
79
132
}
80
133
81
134
it ( 'renders nothing when tokenlessSection flag is false' , ( ) => {
82
- setup ( { tokenlessSection : false } )
135
+ setup ( { tokenlessSection : false , currentUser : mockSignedInUser } )
83
136
const { container } = render ( < TokenlessBanner /> , { wrapper : wrapper ( ) } )
84
137
expect ( container ) . toBeEmptyDOMElement ( )
85
138
} )
@@ -93,7 +146,7 @@ describe('TokenlessBanner', () => {
93
146
} )
94
147
95
148
it ( 'renders TokenRequiredBanner when uploadTokenRequired is true' , async ( ) => {
96
- setup ( { uploadTokenRequired : true } )
149
+ setup ( { uploadTokenRequired : true , currentUser : mockSignedInUser } )
97
150
render ( < TokenlessBanner /> , { wrapper : wrapper ( ) } )
98
151
99
152
await waitFor ( ( ) => {
@@ -102,13 +155,19 @@ describe('TokenlessBanner', () => {
102
155
} )
103
156
} )
104
157
105
- it ( 'renders TokenNotRequiredBanner when uploadTokenRequired is false' , async ( ) => {
106
- setup ( { uploadTokenRequired : false } )
158
+ it . only ( 'renders TokenNotRequiredBanner when uploadTokenRequired is false' , async ( ) => {
159
+ setup ( { uploadTokenRequired : false , currentUser : mockSignedInUser } )
107
160
render ( < TokenlessBanner /> , { wrapper : wrapper ( ) } )
108
161
109
162
await waitFor ( ( ) => {
110
163
const banner = screen . getByText ( 'TokenNotRequiredBanner' )
111
164
expect ( banner ) . toBeInTheDocument ( )
112
165
} )
113
166
} )
167
+
168
+ it . only ( 'renders nothing when currentUser is not provided' , ( ) => {
169
+ setup ( { uploadTokenRequired : false , currentUser : mockSignedInUser } )
170
+ const { container } = render ( < TokenlessBanner /> , { wrapper : wrapper ( ) } )
171
+ expect ( container ) . toBeEmptyDOMElement ( )
172
+ } )
114
173
} )
0 commit comments