@@ -14,6 +14,7 @@ import {
1414 addUserToTeam ,
1515 addUsersToTeam ,
1616 sendEmailInvitesToTeam ,
17+ sendGuestEmailInvitesToTeam ,
1718 fetchMyTeams ,
1819 fetchMyTeam ,
1920 fetchTeamById ,
@@ -83,6 +84,7 @@ const mockClient = {
8384 addToTeam : jest . fn ( ( id : string , userId : string ) => ( { id : userId + '-' + id , user_id : userId , team_id : id , roles : '' } ) ) ,
8485 addUsersToTeamGracefully : jest . fn ( ( id : string , userIds : string [ ] ) => ( userIds . map ( ( userId ) => ( { member : { id : userId + '-' + id , user_id : userId , team_id : id , roles : '' } , error : undefined , user_id : userId } ) ) ) ) ,
8586 sendEmailInvitesToTeamGracefully : jest . fn ( ( id : string , emails : string [ ] ) => ( emails . map ( ( email ) => ( { email, error : undefined } ) ) ) ) ,
87+ sendGuestEmailInvitesToTeamGracefully :
jest . fn ( ( ) => Promise . resolve < TeamInviteWithError [ ] > ( [ { email :
'[email protected] ' , error :
{ message :
'' , status_code :
0 } } ] ) ) , 8688 getRolesByNames : jest . fn ( ( roles : string [ ] ) => roles . map ( ( r ) => ( { id : r , name : r } as Role ) ) ) ,
8789 getMyTeams : jest . fn ( ( ) => ( [ { id : teamId , name : 'team1' } ] ) ) ,
8890 getMyTeamMembers : jest . fn ( ( ) => ( [ { id : 'userid1-' + teamId , user_id : 'userid1' , team_id : teamId , roles : '' } ] ) ) ,
@@ -223,6 +225,88 @@ describe('teamMember', () => {
223225 } ) ;
224226} ) ;
225227
228+ describe ( 'sendGuestEmailInvitesToTeam' , ( ) => {
229+ 230+ const channels = [ 'channel-id-1' , 'channel-id-2' ] ;
231+ const message = 'Welcome to the team!' ;
232+
233+ const throwFunc = ( ) => {
234+ throw Error ( 'error' ) ;
235+ } ;
236+
237+ beforeEach ( ( ) => {
238+ jest . clearAllMocks ( ) ;
239+ } ) ;
240+
241+ it ( 'should send guest email invites successfully with all parameters' , async ( ) => {
242+ const mockMembers : TeamInviteWithError [ ] = [
243+ { email :
'[email protected] ' , error :
{ message :
'' , status_code :
0 } } , 244+ { email :
'[email protected] ' , error :
{ message :
'' , status_code :
0 } } , 245+ ] ;
246+ mockClient . sendGuestEmailInvitesToTeamGracefully . mockResolvedValueOnce ( mockMembers ) ;
247+
248+ const result = await sendGuestEmailInvitesToTeam ( serverUrl , teamId , emails , channels , message ) ;
249+
250+ expect ( result ) . toBeDefined ( ) ;
251+ expect ( result . error ) . toBeUndefined ( ) ;
252+ expect ( result . members ) . toEqual ( mockMembers ) ;
253+ expect ( mockClient . sendGuestEmailInvitesToTeamGracefully ) . toHaveBeenCalledWith ( teamId , emails , channels , message , false ) ;
254+ expect ( mockClient . sendGuestEmailInvitesToTeamGracefully ) . toHaveBeenCalledTimes ( 1 ) ;
255+ } ) ;
256+
257+ it ( 'should send guest email invites successfully without message parameter' , async ( ) => {
258+ const mockMembers : TeamInviteWithError [ ] = [
259+ { email :
'[email protected] ' , error :
{ message :
'' , status_code :
0 } } , 260+ ] ;
261+ mockClient . sendGuestEmailInvitesToTeamGracefully . mockResolvedValueOnce ( mockMembers ) ;
262+
263+ const result = await sendGuestEmailInvitesToTeam ( serverUrl , teamId , [ '[email protected] ' ] , channels ) ; 264+
265+ expect ( result ) . toBeDefined ( ) ;
266+ expect ( result . error ) . toBeUndefined ( ) ;
267+ expect ( result . members ) . toEqual ( mockMembers ) ;
268+ expect ( mockClient . sendGuestEmailInvitesToTeamGracefully ) . toHaveBeenCalledWith ( teamId , [ '[email protected] ' ] , channels , '' , false ) ; 269+ expect ( mockClient . sendGuestEmailInvitesToTeamGracefully ) . toHaveBeenCalledTimes ( 1 ) ;
270+ } ) ;
271+
272+ it ( 'should handle client error' , async ( ) => {
273+ const clientError = new Error ( 'Client error' ) ;
274+ mockClient . sendGuestEmailInvitesToTeamGracefully . mockRejectedValueOnce ( clientError ) ;
275+
276+ const result = await sendGuestEmailInvitesToTeam ( serverUrl , teamId , emails , channels , message ) ;
277+
278+ expect ( result ) . toBeDefined ( ) ;
279+ expect ( result . error ) . toBeDefined ( ) ;
280+ expect ( result . members ) . toEqual ( [ ] ) ;
281+ expect ( mockClient . sendGuestEmailInvitesToTeamGracefully ) . toHaveBeenCalledWith ( teamId , emails , channels , message , false ) ;
282+ } ) ;
283+
284+ it ( 'should handle network manager error' , async ( ) => {
285+ jest . spyOn ( NetworkManager , 'getClient' ) . mockImplementationOnce ( throwFunc ) ;
286+
287+ const result = await sendGuestEmailInvitesToTeam ( serverUrl , teamId , emails , channels , message ) ;
288+
289+ expect ( result ) . toBeDefined ( ) ;
290+ expect ( result . error ) . toBeDefined ( ) ;
291+ expect ( result . members ) . toEqual ( [ ] ) ;
292+ } ) ;
293+
294+ it ( 'should send guest email invites with guest magic link' , async ( ) => {
295+ const mockMembers : TeamInviteWithError [ ] = [
296+ { email :
'[email protected] ' , error :
{ message :
'' , status_code :
0 } } , 297+ ] ;
298+ mockClient . sendGuestEmailInvitesToTeamGracefully . mockResolvedValueOnce ( mockMembers ) ;
299+
300+ const result = await sendGuestEmailInvitesToTeam ( serverUrl , teamId , emails , channels , message , true ) ;
301+
302+ expect ( result ) . toBeDefined ( ) ;
303+ expect ( result . error ) . toBeUndefined ( ) ;
304+ expect ( result . members ) . toEqual ( mockMembers ) ;
305+ expect ( mockClient . sendGuestEmailInvitesToTeamGracefully ) . toHaveBeenCalledWith ( teamId , emails , channels , message , true ) ;
306+ expect ( mockClient . sendGuestEmailInvitesToTeamGracefully ) . toHaveBeenCalledTimes ( 1 ) ;
307+ } ) ;
308+ } ) ;
309+
226310describe ( 'teams' , ( ) => {
227311 it ( 'fetchMyTeams - handle not found database' , async ( ) => {
228312 const result = await fetchMyTeams ( 'foo' ) as { error : unknown } ;
0 commit comments