UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

101 lines (74 loc) 3.08 kB
import { disableCache, enableCache, pullFromCache } from '~/cache/api'; import { channelPayload, client, connectClient, conversationChannelPayload, convertRawChannelPayload, disconnectClient, liveChannelPayload, rawChannelPayload, } from '~/utils/tests'; import { createChannel } from '../createChannel'; const resPayload = { data: rawChannelPayload }; describe('createChannel', () => { beforeAll(connectClient); afterAll(disconnectClient); // integration_test_id: 9d80fd54-9e6d-454d-8344-6f9436b8e495 test('it should create a channel for community', async () => { client.http.post = jest.fn().mockResolvedValueOnce(resPayload); const { channels: [expected], } = convertRawChannelPayload(rawChannelPayload); const res = await createChannel({ type: 'community' }); expect(res).toBeDefined(); expect(res.data).toStrictEqual(expected); }); // integration_test_id: cef520ab-027d-4c5b-836c-a7f63ddc5146 test('it should create a channel for live', async () => { client.http.post = jest.fn().mockResolvedValueOnce({ data: liveChannelPayload }); const { channels: [expected], } = convertRawChannelPayload(liveChannelPayload); const res = await createChannel({ type: 'live' }); expect(res).toBeDefined(); expect(res.data).toStrictEqual(expected); }); // integration_test_id: 11a43612-ff6f-4262-874c-4419d342cff1 test('it should create a channel for conversation', async () => { client.http.post = jest.fn().mockResolvedValueOnce({ data: conversationChannelPayload }); const { channels: [expected], } = convertRawChannelPayload(conversationChannelPayload); const res = await createChannel({ type: 'conversation' }); expect(res).toBeDefined(); expect(res.data).toStrictEqual(expected); }); test('it should add channel to cache', async () => { enableCache(); client.http.post = jest.fn().mockResolvedValueOnce(resPayload); const { channelId } = channelPayload.channels[0]; const { channels: [expected], } = convertRawChannelPayload(rawChannelPayload); await createChannel({ type: 'community' }); const data = pullFromCache(['channel', 'get', channelId]); expect(data).toBeDefined(); expect(data?.data).toStrictEqual(expected); disableCache(); }); test('it should call conversation channel with /conversation api', async () => { const mockFn = jest.fn(); client.http.post = mockFn.mockResolvedValueOnce(resPayload); const expected = '/api/v3/channels/conversation'; const expectedPayload = { type: 'conversation', isDistinct: true }; await createChannel({ type: 'conversation' }); const [received, receivedPayload] = mockFn.mock.lastCall; expect(received).toBe(expected); expect(receivedPayload).toStrictEqual(expectedPayload); }); test('it should return an error', async () => { client.http.post = jest.fn().mockRejectedValueOnce(new Error('error')); await expect(createChannel({ type: 'conversation' })).rejects.toThrow('error'); }); });