11import type { OrganizationInvitationResource } from '@clerk/types' ;
22import { describe } from '@jest/globals' ;
33import { waitFor } from '@testing-library/dom' ;
4+ import React from 'react' ;
45
56import { ClerkAPIResponseError } from '../../../../core/resources' ;
67import { render } from '../../../../testUtils' ;
@@ -91,10 +92,9 @@ describe('InviteMembersPage', () => {
9192 await userEvent . click ( getByRole ( 'button' , { name : / a d m i n / i } ) ) ;
9293 } ) ;
9394
94- it ( ' initializes with the only available role' , async ( ) => {
95+ it ( " initializes if there's only one role available" , async ( ) => {
9596 const { wrapper, fixtures } = await createFixtures ( f => {
9697 f . withOrganizations ( ) ;
97- f . withOrganizationDomains ( undefined , undefined ) ;
9898 f . withUser ( {
9999 email_addresses : [ 'test@clerk.com' ] ,
100100 organization_memberships : [ { name : 'Org1' , role : 'admin' } ] ,
@@ -126,11 +126,59 @@ describe('InviteMembersPage', () => {
126126 { wrapper } ,
127127 ) ;
128128 await userEvent . type ( getByTestId ( 'tag-input' ) , 'test+1@clerk.com,' ) ;
129- await userEvent . click ( getByRole ( 'button' , { name : / m e m b e r / i } ) ) ;
129+ await waitFor ( ( ) => expect ( getByRole ( 'button' , { name : / m e m b e r / i } ) ) . toBeInTheDocument ( ) ) ;
130+ } ) ;
131+
132+ it ( "does not initialize if there's neither a default role nor a unique role" , async ( ) => {
133+ const { wrapper, fixtures } = await createFixtures ( f => {
134+ f . withOrganizations ( ) ;
135+ f . withUser ( {
136+ email_addresses : [ 'test@clerk.com' ] ,
137+ organization_memberships : [ { name : 'Org1' , role : 'admin' } ] ,
138+ } ) ;
139+ } ) ;
140+
141+ fixtures . clerk . organization ?. getRoles . mockResolvedValue ( {
142+ total_count : 1 ,
143+ data : [
144+ {
145+ pathRoot : '' ,
146+ reload : jest . fn ( ) ,
147+ id : 'member' ,
148+ key : 'member' ,
149+ name : 'member' ,
150+ description : '' ,
151+ permissions : [ ] ,
152+ createdAt : new Date ( ) ,
153+ updatedAt : new Date ( ) ,
154+ } ,
155+ {
156+ pathRoot : '' ,
157+ reload : jest . fn ( ) ,
158+ id : 'admin' ,
159+ key : 'admin' ,
160+ name : 'admin' ,
161+ description : '' ,
162+ permissions : [ ] ,
163+ createdAt : new Date ( ) ,
164+ updatedAt : new Date ( ) ,
165+ } ,
166+ ] ,
167+ } ) ;
168+
169+ fixtures . clerk . organization ?. inviteMembers . mockResolvedValueOnce ( [ { } ] as OrganizationInvitationResource [ ] ) ;
170+ const { getByRole, userEvent, getByTestId } = render (
171+ < Action . Root >
172+ < InviteMembersScreen />
173+ </ Action . Root > ,
174+ { wrapper } ,
175+ ) ;
176+ await userEvent . type ( getByTestId ( 'tag-input' ) , 'test+1@clerk.com,' ) ;
177+ await waitFor ( ( ) => expect ( getByRole ( 'button' , { name : / s e l e c t r o l e / i } ) ) . toBeInTheDocument ( ) ) ;
130178 } ) ;
131179 } ) ;
132180
133- describe ( 'Submitting ' , ( ) => {
181+ describe ( 'when submitting ' , ( ) => {
134182 it ( 'keeps the Send button disabled until a role is selected and one or more email has been entered' , async ( ) => {
135183 const { wrapper, fixtures } = await createFixtures ( f => {
136184 f . withOrganizations ( ) ;
@@ -154,6 +202,17 @@ describe('InviteMembersPage', () => {
154202 createdAt : new Date ( ) ,
155203 updatedAt : new Date ( ) ,
156204 } ,
205+ {
206+ pathRoot : '' ,
207+ reload : jest . fn ( ) ,
208+ id : 'admin' ,
209+ key : 'admin' ,
210+ name : 'Admin' ,
211+ description : '' ,
212+ permissions : [ ] ,
213+ createdAt : new Date ( ) ,
214+ updatedAt : new Date ( ) ,
215+ } ,
157216 ] ,
158217 } ) ;
159218
@@ -197,6 +256,17 @@ describe('InviteMembersPage', () => {
197256 createdAt : new Date ( ) ,
198257 updatedAt : new Date ( ) ,
199258 } ,
259+ {
260+ pathRoot : '' ,
261+ reload : jest . fn ( ) ,
262+ id : 'admin' ,
263+ key : 'admin' ,
264+ name : 'Admin' ,
265+ description : '' ,
266+ permissions : [ ] ,
267+ createdAt : new Date ( ) ,
268+ updatedAt : new Date ( ) ,
269+ } ,
200270 ] ,
201271 } ) ;
202272
@@ -243,6 +313,17 @@ describe('InviteMembersPage', () => {
243313 createdAt : new Date ( ) ,
244314 updatedAt : new Date ( ) ,
245315 } ,
316+ {
317+ pathRoot : '' ,
318+ reload : jest . fn ( ) ,
319+ id : 'admin' ,
320+ key : 'admin' ,
321+ name : 'Admin' ,
322+ description : '' ,
323+ permissions : [ ] ,
324+ createdAt : new Date ( ) ,
325+ updatedAt : new Date ( ) ,
326+ } ,
246327 ] ,
247328 } ) ;
248329
@@ -348,6 +429,17 @@ describe('InviteMembersPage', () => {
348429 createdAt : new Date ( ) ,
349430 updatedAt : new Date ( ) ,
350431 } ,
432+ {
433+ pathRoot : '' ,
434+ reload : jest . fn ( ) ,
435+ id : 'admin' ,
436+ key : 'admin' ,
437+ name : 'Admin' ,
438+ description : '' ,
439+ permissions : [ ] ,
440+ createdAt : new Date ( ) ,
441+ updatedAt : new Date ( ) ,
442+ } ,
351443 ] ,
352444 } ) ;
353445
@@ -407,6 +499,17 @@ describe('InviteMembersPage', () => {
407499 createdAt : new Date ( ) ,
408500 updatedAt : new Date ( ) ,
409501 } ,
502+ {
503+ pathRoot : '' ,
504+ reload : jest . fn ( ) ,
505+ id : 'admin' ,
506+ key : 'admin' ,
507+ name : 'Admin' ,
508+ description : '' ,
509+ permissions : [ ] ,
510+ createdAt : new Date ( ) ,
511+ updatedAt : new Date ( ) ,
512+ } ,
410513 ] ,
411514 } ) ;
412515
@@ -462,6 +565,17 @@ describe('InviteMembersPage', () => {
462565 createdAt : new Date ( ) ,
463566 updatedAt : new Date ( ) ,
464567 } ,
568+ {
569+ pathRoot : '' ,
570+ reload : jest . fn ( ) ,
571+ id : 'admin' ,
572+ key : 'admin' ,
573+ name : 'Admin' ,
574+ description : '' ,
575+ permissions : [ ] ,
576+ createdAt : new Date ( ) ,
577+ updatedAt : new Date ( ) ,
578+ } ,
465579 ] ,
466580 } ) ;
467581
0 commit comments