Skip to content

Commit 85d44e4

Browse files
committed
added tests for createdirectchat.tsx
1 parent 621782c commit 85d44e4

File tree

4 files changed

+297
-36
lines changed

4 files changed

+297
-36
lines changed

docs/docs/auto-docs/components/UserPortal/CreateDirectChat/CreateDirectChat/functions/default.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
> **default**(`__namedParameters`): `JSX.Element`
88
9-
Defined in: [src/components/UserPortal/CreateDirectChat/CreateDirectChat.tsx:62](https://github.com/PalisadoesFoundation/talawa-admin/blob/main/src/components/UserPortal/CreateDirectChat/CreateDirectChat.tsx#L62)
9+
Defined in: [src/components/UserPortal/CreateDirectChat/CreateDirectChat.tsx:136](https://github.com/PalisadoesFoundation/talawa-admin/blob/main/src/components/UserPortal/CreateDirectChat/CreateDirectChat.tsx#L136)
1010

1111
## Parameters
1212

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
[Admin Docs](/)
2+
3+
***
4+
5+
# Function: handleCreateDirectChat()
6+
7+
> **handleCreateDirectChat**(`id`, `chats`, `t`, `createChat`, `organizationId`, `userId`, `chatsListRefetch`, `toggleCreateDirectChatModal`): `Promise`\<`void`\>
8+
9+
Defined in: [src/components/UserPortal/CreateDirectChat/CreateDirectChat.tsx:70](https://github.com/PalisadoesFoundation/talawa-admin/blob/main/src/components/UserPortal/CreateDirectChat/CreateDirectChat.tsx#L70)
10+
11+
## Parameters
12+
13+
### id
14+
15+
`string`
16+
17+
### chats
18+
19+
[`Chat`](../../../../../screens/UserPortal/Chat/Chat/type-aliases/Chat.md)[]
20+
21+
### t
22+
23+
`TFunction`\<`"userChat"`\>
24+
25+
### createChat
26+
27+
(`options`?) => `Promise`\<`FetchResult`\<`unknown`\>\>(`arg0`) => `unknown`
28+
29+
### organizationId
30+
31+
`string`
32+
33+
### userId
34+
35+
`string`
36+
37+
### chatsListRefetch
38+
39+
(`variables`?) => `Promise`\<`ApolloQueryResult`\<`unknown`\>\>() => `Promise`\<`ApolloQueryResult`\<`unknown`\>\>
40+
41+
### toggleCreateDirectChatModal
42+
43+
() => `void`() => `void`
44+
45+
## Returns
46+
47+
`Promise`\<`void`\>

src/components/UserPortal/CreateDirectChat/CreateDirectChat.spec.tsx

Lines changed: 164 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import { BrowserRouter } from 'react-router-dom';
1313
import { Provider } from 'react-redux';
1414
import { store } from 'state/store';
1515
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';
1718
import {
1819
CREATE_CHAT,
1920
MARK_CHAT_MESSAGES_AS_READ,
@@ -27,6 +28,10 @@ import {
2728
} from 'GraphQl/Queries/PlugInQueries';
2829
import useLocalStorage from 'utils/useLocalstorage';
2930
import { vi } from 'vitest';
31+
import { handleCreateDirectChat } from './CreateDirectChat';
32+
import type { TFunction } from 'i18next';
33+
import type { ApolloQueryResult, FetchResult } from '@apollo/client';
34+
3035
const { setItem } = useLocalStorage();
3136

3237
/**
@@ -3947,7 +3952,7 @@ describe('Testing Create Direct Chat Modal [User Portal]', () => {
39473952
<BrowserRouter>
39483953
<Provider store={store}>
39493954
<I18nextProvider i18n={i18nForTest}>
3950-
<Chat />
3955+
<ChatComp />
39513956
</I18nextProvider>
39523957
</Provider>
39533958
</BrowserRouter>
@@ -4001,7 +4006,7 @@ describe('Testing Create Direct Chat Modal [User Portal]', () => {
40014006
<BrowserRouter>
40024007
<Provider store={store}>
40034008
<I18nextProvider i18n={i18nForTest}>
4004-
<Chat />
4009+
<ChatComp />
40054010
</I18nextProvider>
40064011
</Provider>
40074012
</BrowserRouter>
@@ -4033,4 +4038,160 @@ describe('Testing Create Direct Chat Modal [User Portal]', () => {
40334038

40344039
await wait();
40354040
});
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+
});
40364197
});

0 commit comments

Comments
 (0)