Skip to content

Commit 0cee27b

Browse files
authored
[CLNP-6427] Add init test for the exported components (#1322)
### Ticket [CLNP-6427](https://sendbird.atlassian.net/browse/CLNP-6427) ### Changelog * Added initial rendering test of provider-related components with the default props. [CLNP-6427]: https://sendbird.atlassian.net/browse/CLNP-6427?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
1 parent b20fd60 commit 0cee27b

File tree

8 files changed

+606
-26
lines changed

8 files changed

+606
-26
lines changed
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
import React from 'react';
2+
import { render } from '@testing-library/react';
3+
import '@testing-library/jest-dom/extend-expect';
4+
import SendbirdProvider from '../../../lib/Sendbird/context/SendbirdProvider';
5+
import { ChannelSettingsProvider } from '../context';
6+
import ChannelProfile from '../components/ChannelProfile';
7+
import ChannelSettingsUI from '../components/ChannelSettingsUI';
8+
import ChannelSettingsHeader from '../components/ChannelSettingsUI/ChannelSettingsHeader';
9+
import MenuItem from '../components/ChannelSettingsUI/MenuItem';
10+
import EditDetailsModal from '../components/EditDetailsModal';
11+
import LeaveChannel from '../components/LeaveChannel';
12+
import UserListItem from '../components/UserListItem';
13+
import { User } from '@sendbird/chat';
14+
import UserPanel from '../components/UserPanel';
15+
import ModerationPanel from '../components/ModerationPanel';
16+
17+
// Mock createPortal function to render content directly without portal
18+
jest.mock('react-dom', () => ({
19+
...jest.requireActual('react-dom'),
20+
createPortal: (node) => node,
21+
}));
22+
23+
describe('ChannelSettings Unit Tests', () => {
24+
const defaultProps = {
25+
channelUrl: 'mockChannelUrl',
26+
};
27+
28+
it('renders ChannelSettingsUI with default value', () => {
29+
expect(() => {
30+
render(
31+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
32+
<ChannelSettingsProvider {...defaultProps}>
33+
<ChannelSettingsUI />
34+
</ChannelSettingsProvider>,
35+
</SendbirdProvider>,
36+
);
37+
}).not.toThrow();
38+
});
39+
40+
it('renders ChannelProfile with default value', () => {
41+
expect(() => {
42+
render(
43+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
44+
<ChannelSettingsProvider {...defaultProps}>
45+
<ChannelProfile />
46+
</ChannelSettingsProvider>,
47+
</SendbirdProvider>,
48+
);
49+
}).not.toThrow();
50+
});
51+
52+
it('renders ChannelSettingsHeader with default value', () => {
53+
expect(() => {
54+
render(
55+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
56+
<ChannelSettingsProvider {...defaultProps}>
57+
<ChannelSettingsHeader />
58+
</ChannelSettingsProvider>,
59+
</SendbirdProvider>,
60+
);
61+
}).not.toThrow();
62+
});
63+
64+
it('renders ChannelSettingMenuList with default value', () => {
65+
expect(() => {
66+
render(
67+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
68+
<ChannelSettingsProvider {...defaultProps}>
69+
<MenuItem
70+
renderLeft={() => null}
71+
renderMiddle={() => null}
72+
/>
73+
</ChannelSettingsProvider>,
74+
</SendbirdProvider>,
75+
);
76+
}).not.toThrow();
77+
});
78+
79+
it('renders EditDetailsModal with default value', () => {
80+
expect(() => {
81+
render(
82+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
83+
<ChannelSettingsProvider {...defaultProps}>
84+
<EditDetailsModal
85+
onSubmit={() => jest.fn()}
86+
onCancel={() => jest.fn()}
87+
/>
88+
</ChannelSettingsProvider>,
89+
</SendbirdProvider>,
90+
);
91+
}).not.toThrow();
92+
});
93+
94+
it('renders LeaveChannel with default value', () => {
95+
expect(() => {
96+
render(
97+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
98+
<ChannelSettingsProvider {...defaultProps}>
99+
<LeaveChannel
100+
onSubmit={() => jest.fn()}
101+
onCancel={() => jest.fn()}
102+
/>
103+
</ChannelSettingsProvider>,
104+
</SendbirdProvider>,
105+
);
106+
}).not.toThrow();
107+
});
108+
109+
it('renders UserLisItem with default value', () => {
110+
expect(() => {
111+
render(
112+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
113+
<ChannelSettingsProvider {...defaultProps}>
114+
<UserListItem user={{ userId: 'mockUserId', nickname: 'mockNickname' } as User}/>
115+
</ChannelSettingsProvider>,
116+
</SendbirdProvider>,
117+
);
118+
}).not.toThrow();
119+
});
120+
121+
it('renders UserPanel with default value', () => {
122+
expect(() => {
123+
render(
124+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
125+
<ChannelSettingsProvider {...defaultProps}>
126+
<UserPanel />
127+
</ChannelSettingsProvider>,
128+
</SendbirdProvider>,
129+
);
130+
}).not.toThrow();
131+
});
132+
133+
it('renders ModerationPanel with default value', () => {
134+
expect(() => {
135+
render(
136+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
137+
<ChannelSettingsProvider {...defaultProps}>
138+
<ModerationPanel />
139+
</ChannelSettingsProvider>,
140+
</SendbirdProvider>,
141+
);
142+
}).not.toThrow();
143+
});
144+
145+
});
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import React from 'react';
2+
import { render } from '@testing-library/react';
3+
import '@testing-library/jest-dom/extend-expect';
4+
import SendbirdProvider from '../../../lib/Sendbird/context/SendbirdProvider';
5+
import { CreateChannelProvider } from '../context';
6+
import CreateChannelUI from '../components/CreateChannelUI';
7+
import InviteUsers from '../components/InviteUsers';
8+
import SelectChannelType from '../components/SelectChannelType';
9+
10+
// Mock createPortal function to render content directly without portal
11+
jest.mock('react-dom', () => ({
12+
...jest.requireActual('react-dom'),
13+
createPortal: (node) => node,
14+
}));
15+
16+
jest.mock('../components/InviteUsers/utils', () => ({
17+
...jest.requireActual('../components/InviteUsers/utils'),
18+
createDefaultUserListQuery: () => ({
19+
isLoading: false,
20+
next: async () => [],
21+
}),
22+
}));
23+
24+
describe('CreateChannel Unit Tests', () => {
25+
const defaultProps = {
26+
onChannelCreated: () => jest.fn(),
27+
};
28+
29+
it('renders CreateChannelUI with default value', () => {
30+
expect(() => {
31+
render(
32+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
33+
<CreateChannelProvider {...defaultProps}>
34+
<CreateChannelUI />
35+
</CreateChannelProvider>,
36+
</SendbirdProvider>,
37+
);
38+
}).not.toThrow();
39+
});
40+
41+
it('renders InviteUsers with default value', () => {
42+
expect(() => {
43+
render(
44+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
45+
<CreateChannelProvider {...defaultProps}>
46+
<InviteUsers />
47+
</CreateChannelProvider>,
48+
</SendbirdProvider>,
49+
);
50+
}).not.toThrow();
51+
});
52+
53+
it('renders SelectChannelType with default value', () => {
54+
expect(() => {
55+
render(
56+
<SendbirdProvider appId="mockAppId" userId="mockUserId">
57+
<CreateChannelProvider {...defaultProps}>
58+
<SelectChannelType />
59+
</CreateChannelProvider>,
60+
</SendbirdProvider>,
61+
);
62+
}).not.toThrow();
63+
});
64+
65+
});

0 commit comments

Comments
 (0)