@@ -13,7 +13,8 @@ import { BrowserRouter } from 'react-router-dom';
13
13
import { Provider } from 'react-redux' ;
14
14
import { store } from 'state/store' ;
15
15
import i18nForTest from 'utils/i18nForTest' ;
16
- import Chat from '../../../screens/UserPortal/Chat/Chat' ;
16
+ import type { Chat } from '../../../screens/UserPortal/Chat/Chat' ;
17
+ import ChatComp from '../../../screens/UserPortal/Chat/Chat' ;
17
18
import {
18
19
CREATE_CHAT ,
19
20
MARK_CHAT_MESSAGES_AS_READ ,
@@ -27,6 +28,10 @@ import {
27
28
} from 'GraphQl/Queries/PlugInQueries' ;
28
29
import useLocalStorage from 'utils/useLocalstorage' ;
29
30
import { vi } from 'vitest' ;
31
+ import { handleCreateDirectChat } from './CreateDirectChat' ;
32
+ import type { TFunction } from 'i18next' ;
33
+ import type { ApolloQueryResult , FetchResult } from '@apollo/client' ;
34
+
30
35
const { setItem } = useLocalStorage ( ) ;
31
36
32
37
/**
@@ -3947,7 +3952,7 @@ describe('Testing Create Direct Chat Modal [User Portal]', () => {
3947
3952
< BrowserRouter >
3948
3953
< Provider store = { store } >
3949
3954
< I18nextProvider i18n = { i18nForTest } >
3950
- < Chat />
3955
+ < ChatComp />
3951
3956
</ I18nextProvider >
3952
3957
</ Provider >
3953
3958
</ BrowserRouter >
@@ -4001,7 +4006,7 @@ describe('Testing Create Direct Chat Modal [User Portal]', () => {
4001
4006
< BrowserRouter >
4002
4007
< Provider store = { store } >
4003
4008
< I18nextProvider i18n = { i18nForTest } >
4004
- < Chat />
4009
+ < ChatComp />
4005
4010
</ I18nextProvider >
4006
4011
</ Provider >
4007
4012
</ BrowserRouter >
@@ -4033,4 +4038,160 @@ describe('Testing Create Direct Chat Modal [User Portal]', () => {
4033
4038
4034
4039
await wait ( ) ;
4035
4040
} ) ;
4041
+ it ( 'should create chat if a conversation does not with the selected user' , async ( ) => {
4042
+ const t = ( ( key : string ) => {
4043
+ return key ;
4044
+ } ) as TFunction ;
4045
+ const createChat = vi . fn ( async ( ) : Promise < FetchResult < unknown > > => {
4046
+ return { data : { } } as FetchResult < unknown > ;
4047
+ } ) ;
4048
+ const chatsListRefetch = vi . fn (
4049
+ async ( ) : Promise < ApolloQueryResult < unknown > > => {
4050
+ return { data : { } } as ApolloQueryResult < unknown > ;
4051
+ } ,
4052
+ ) ;
4053
+ const toggleCreateDirectChatModal = vi . fn ( ) ;
4054
+ const chats : Chat [ ] = [
4055
+ {
4056
+ _id : '1' ,
4057
+ isGroup : false ,
4058
+ name : '' ,
4059
+ image : '' ,
4060
+ messages : [ ] ,
4061
+ unseenMessagesByUsers : '{}' ,
4062
+ users : [
4063
+ {
4064
+ _id : '1' ,
4065
+ firstName : 'Aaditya' ,
4066
+ lastName : 'Agarwal' ,
4067
+ email : '' ,
4068
+ image : '' ,
4069
+ } ,
4070
+ {
4071
+ _id : '3' ,
4072
+ firstName : 'Test' ,
4073
+ lastName : 'User' ,
4074
+ email : '' ,
4075
+ image : '' ,
4076
+ } ,
4077
+ ] ,
4078
+ } ,
4079
+ ] ;
4080
+ await handleCreateDirectChat (
4081
+ '2' ,
4082
+ chats ,
4083
+ t ,
4084
+ createChat ,
4085
+ '1' ,
4086
+ '1' ,
4087
+ chatsListRefetch ,
4088
+ toggleCreateDirectChatModal ,
4089
+ ) ;
4090
+ expect ( createChat ) . toHaveBeenCalled ( ) ;
4091
+ expect ( chatsListRefetch ) . toHaveBeenCalled ( ) ;
4092
+ expect ( toggleCreateDirectChatModal ) . toHaveBeenCalled ( ) ;
4093
+ } ) ;
4094
+ it ( 'should not create chat if a conversation already exists with the selected user' , async ( ) => {
4095
+ const t = ( ( key : string ) => {
4096
+ return key ;
4097
+ } ) as TFunction ;
4098
+ const createChat = vi . fn ( async ( ) : Promise < FetchResult < unknown > > => {
4099
+ return { data : { } } as FetchResult < unknown > ;
4100
+ } ) ;
4101
+ const chatsListRefetch = vi . fn (
4102
+ async ( ) : Promise < ApolloQueryResult < unknown > > => {
4103
+ return { data : { } } as ApolloQueryResult < unknown > ;
4104
+ } ,
4105
+ ) ;
4106
+ const toggleCreateDirectChatModal = vi . fn ( ) ;
4107
+ const chats : Chat [ ] = [
4108
+ {
4109
+ _id : '1' ,
4110
+ isGroup : false ,
4111
+ name : '' ,
4112
+ image : '' ,
4113
+ messages : [ ] ,
4114
+ unseenMessagesByUsers : '{}' ,
4115
+ users : [
4116
+ {
4117
+ _id : '1' ,
4118
+ firstName : 'Aaditya' ,
4119
+ lastName : 'Agarwal' ,
4120
+ email : '' ,
4121
+ image : '' ,
4122
+ } ,
4123
+ {
4124
+ _id : '2' ,
4125
+ firstName : 'Test' ,
4126
+ lastName : 'User' ,
4127
+ email : '' ,
4128
+ image : '' ,
4129
+ } ,
4130
+ ] ,
4131
+ } ,
4132
+ ] ;
4133
+ await handleCreateDirectChat (
4134
+ '2' ,
4135
+ chats ,
4136
+ t ,
4137
+ createChat ,
4138
+ '1' ,
4139
+ '1' ,
4140
+ chatsListRefetch ,
4141
+ toggleCreateDirectChatModal ,
4142
+ ) ;
4143
+ expect ( createChat ) . not . toHaveBeenCalled ( ) ;
4144
+ expect ( chatsListRefetch ) . not . toHaveBeenCalled ( ) ;
4145
+ expect ( toggleCreateDirectChatModal ) . not . toHaveBeenCalled ( ) ;
4146
+ } ) ;
4147
+
4148
+ it ( 'should handle error if create chat fails' , async ( ) => {
4149
+ const t = ( ( key : string ) => {
4150
+ return key ;
4151
+ } ) as TFunction ;
4152
+ const createChat = vi . fn ( async ( ) : Promise < FetchResult < unknown > > => {
4153
+ throw new Error ( 'Error' ) ;
4154
+ } ) ;
4155
+ const chatsListRefetch = vi . fn ( ) ;
4156
+ const toggleCreateDirectChatModal = vi . fn ( ) ;
4157
+ const chats : Chat [ ] = [
4158
+ {
4159
+ _id : '1' ,
4160
+ isGroup : false ,
4161
+ name : '' ,
4162
+ image : '' ,
4163
+ messages : [ ] ,
4164
+ unseenMessagesByUsers : '{}' ,
4165
+ users : [
4166
+ {
4167
+ _id : '1' ,
4168
+ firstName : 'Aaditya' ,
4169
+ lastName : 'Agarwal' ,
4170
+ email : '' ,
4171
+ image : '' ,
4172
+ } ,
4173
+ {
4174
+ _id : '3' ,
4175
+ firstName : 'Test' ,
4176
+ lastName : 'User' ,
4177
+ email : '' ,
4178
+ image : '' ,
4179
+ } ,
4180
+ ] ,
4181
+ } ,
4182
+ ] ;
4183
+ await handleCreateDirectChat (
4184
+ '2' ,
4185
+ chats ,
4186
+ t ,
4187
+ createChat ,
4188
+ '1' ,
4189
+ '1' ,
4190
+ chatsListRefetch ,
4191
+ toggleCreateDirectChatModal ,
4192
+ ) ;
4193
+ expect ( createChat ) . toHaveBeenCalled ( ) ;
4194
+ expect ( chatsListRefetch ) . not . toHaveBeenCalled ( ) ;
4195
+ expect ( toggleCreateDirectChatModal ) . not . toHaveBeenCalled ( ) ;
4196
+ } ) ;
4036
4197
} ) ;
0 commit comments