UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

58 lines (49 loc) 1.85 kB
import type { Channel, StreamChat, UserResponse } from 'stream-chat'; import { getOrCreateChannelApi } from './getOrCreateChannel'; import { useMockedApis } from './useMockedApis'; import { generateChannel } from '../generator/channel'; import { generateMember } from '../generator/member'; import { generateUser } from '../generator/user'; import { getTestClientWithUser } from '../mock'; type ChannelData = Parameters<typeof generateChannel>[0]; const initChannelFromData = async ({ channelData, client, defaultGenerateChannelOptions, }: { channelData: ChannelData; client: StreamChat; defaultGenerateChannelOptions: ChannelData; }): Promise<Channel> => { const mockedChannelData = generateChannel({ ...defaultGenerateChannelOptions, ...channelData, }); useMockedApis(client, [getOrCreateChannelApi(mockedChannelData)]); const channel = client.channel(mockedChannelData.type, mockedChannelData.id); await channel.watch(); jest.spyOn(channel, 'getConfig').mockImplementation(() => mockedChannelData.channel.config); // jest // .spyOn(channel, 'getDraft') // .mockImplementation(() => generateMessageDraft({ channel_cid: channel.cid })); return channel; }; export const initiateClientWithChannels = async ({ channelsData, customUser, }: { channelsData?: ChannelData[]; customUser?: UserResponse; } = {}): Promise<{ channels: Channel[]; client: StreamChat }> => { const user = customUser || generateUser(); const client = await getTestClientWithUser(user); const defaultGenerateChannelOptions = { members: [generateMember({ user })], }; const channels = await Promise.all( (channelsData ?? [defaultGenerateChannelOptions]).map((channelData) => initChannelFromData({ channelData, client, defaultGenerateChannelOptions }), ), ); return { channels, client }; };