Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 145 additions & 0 deletions src/modules/ChannelSettings/__test__/ChannelSettings.spec.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
import React from 'react';
import { render } from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect';
import SendbirdProvider from '../../../lib/Sendbird/context/SendbirdProvider';
import { ChannelSettingsProvider } from '../context';
import ChannelProfile from '../components/ChannelProfile';
import ChannelSettingsUI from '../components/ChannelSettingsUI';
import ChannelSettingsHeader from '../components/ChannelSettingsUI/ChannelSettingsHeader';
import MenuItem from '../components/ChannelSettingsUI/MenuItem';
import EditDetailsModal from '../components/EditDetailsModal';
import LeaveChannel from '../components/LeaveChannel';
import UserListItem from '../components/UserListItem';
import { User } from '@sendbird/chat';
import UserPanel from '../components/UserPanel';
import ModerationPanel from '../components/ModerationPanel';

// Mock createPortal function to render content directly without portal
jest.mock('react-dom', () => ({
...jest.requireActual('react-dom'),
createPortal: (node) => node,
}));

describe('ChannelSettings Unit Tests', () => {
const defaultProps = {
channelUrl: 'mockChannelUrl',
};

it('renders ChannelSettingsUI with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<ChannelSettingsProvider {...defaultProps}>
<ChannelSettingsUI />
</ChannelSettingsProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders ChannelProfile with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<ChannelSettingsProvider {...defaultProps}>
<ChannelProfile />
</ChannelSettingsProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders ChannelSettingsHeader with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<ChannelSettingsProvider {...defaultProps}>
<ChannelSettingsHeader />
</ChannelSettingsProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders ChannelSettingMenuList with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<ChannelSettingsProvider {...defaultProps}>
<MenuItem
renderLeft={() => null}
renderMiddle={() => null}
/>
</ChannelSettingsProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders EditDetailsModal with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<ChannelSettingsProvider {...defaultProps}>
<EditDetailsModal
onSubmit={() => jest.fn()}
onCancel={() => jest.fn()}
/>
</ChannelSettingsProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders LeaveChannel with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<ChannelSettingsProvider {...defaultProps}>
<LeaveChannel
onSubmit={() => jest.fn()}
onCancel={() => jest.fn()}
/>
</ChannelSettingsProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders UserLisItem with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<ChannelSettingsProvider {...defaultProps}>
<UserListItem user={{ userId: 'mockUserId', nickname: 'mockNickname' } as User}/>
</ChannelSettingsProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders UserPanel with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<ChannelSettingsProvider {...defaultProps}>
<UserPanel />
</ChannelSettingsProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders ModerationPanel with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<ChannelSettingsProvider {...defaultProps}>
<ModerationPanel />
</ChannelSettingsProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

});
65 changes: 65 additions & 0 deletions src/modules/CreateChannel/__test__/CreateChannel.spec.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import React from 'react';
import { render } from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect';
import SendbirdProvider from '../../../lib/Sendbird/context/SendbirdProvider';
import { CreateChannelProvider } from '../context';
import CreateChannelUI from '../components/CreateChannelUI';
import InviteUsers from '../components/InviteUsers';
import SelectChannelType from '../components/SelectChannelType';

// Mock createPortal function to render content directly without portal
jest.mock('react-dom', () => ({
...jest.requireActual('react-dom'),
createPortal: (node) => node,
}));

jest.mock('../components/InviteUsers/utils', () => ({
...jest.requireActual('../components/InviteUsers/utils'),
createDefaultUserListQuery: () => ({
isLoading: false,
next: async () => [],
}),
}));

describe('CreateChannel Unit Tests', () => {
const defaultProps = {
onChannelCreated: () => jest.fn(),
};

it('renders CreateChannelUI with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<CreateChannelProvider {...defaultProps}>
<CreateChannelUI />
</CreateChannelProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders InviteUsers with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<CreateChannelProvider {...defaultProps}>
<InviteUsers />
</CreateChannelProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

it('renders SelectChannelType with default value', () => {
expect(() => {
render(
<SendbirdProvider appId="mockAppId" userId="mockUserId">
<CreateChannelProvider {...defaultProps}>
<SelectChannelType />
</CreateChannelProvider>,
</SendbirdProvider>,
);
}).not.toThrow();
});

});
Loading