UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

116 lines (95 loc) 4.01 kB
import { getActiveClient } from '~/client/api'; import { client, connectClient, disconnectClient, comment11, imageComment11, textImageComment11, textMentionComment11, comment12, post11, imageCommentResponse, textCommentParentIdResponse, textCommentResponse, textImageCommentResponse, textMentionCommentResponse, imageCommentRequestPayload, textCommentParentIdRequestPayload, textCommentRequestPayload, textCommentWithMentionRequestPayload, textImageCommentRequestPayload, } from '~/utils/tests'; import { ASCApiError } from '~/core/errors'; import { createComment } from '../createComment'; import { LinkedObject } from '~/utils/linkedObject'; const getPostResponse = { data: post11, cachedAt: 1673337034544, }; jest.mock('~/postRepository/api/getPost', () => ({ getPost: jest.fn(() => Promise.resolve(getPostResponse)), })); describe('createComment', () => { beforeAll(connectClient); afterAll(disconnectClient); // integration_test_id: 2f83eabc-46db-43d8-89c6-1b5339d6a273 it('creates a text comment and returns the new valid comment', async () => { client.http.post = jest.fn().mockResolvedValueOnce(textCommentResponse); const newComment = await createComment(textCommentRequestPayload); expect(getActiveClient().http.post).toHaveBeenCalledWith( '/api/v3/comments', textCommentRequestPayload, ); expect(newComment.data).toEqual(LinkedObject.comment(comment11)); }); // integration_test_id: 81e7d5bc-6881-4f9b-b8d4-deb5fe67200c it('creates a image comment and returns the new valid comment', async () => { client.http.post = jest.fn().mockResolvedValueOnce(imageCommentResponse); const newComment = await createComment(imageCommentRequestPayload); expect(getActiveClient().http.post).toHaveBeenCalledWith( '/api/v3/comments', imageCommentRequestPayload, ); expect(newComment.data).toEqual(LinkedObject.comment(imageComment11)); }); // integration_test_id: 015838a8-3267-4253-920a-9ae83197cf22 it('creates an image + text comment and returns the new valid comment', async () => { client.http.post = jest.fn().mockResolvedValueOnce(textImageCommentResponse); const newComment = await createComment(textImageCommentRequestPayload); expect(getActiveClient().http.post).toHaveBeenCalledWith( '/api/v3/comments', textImageCommentRequestPayload, ); expect(newComment.data).toEqual(LinkedObject.comment(textImageComment11)); }); // integration_test_id: c2285355-f3b6-4e22-926b-11bcf0393161 it('creates text comment with mention and returns the new valid comment', async () => { client.http.post = jest.fn().mockResolvedValueOnce(textMentionCommentResponse); const newComment = await createComment(textCommentWithMentionRequestPayload); expect(getActiveClient().http.post).toHaveBeenCalledWith( '/api/v3/comments', textCommentWithMentionRequestPayload, ); expect(newComment.data).toEqual(LinkedObject.comment(textMentionComment11)); }); // integration_test_id: cb1bfe11-c11a-4324-aeb5-03370da820ad it('creates text comment with parent_id and returns the new valid comment', async () => { client.http.post = jest.fn().mockResolvedValueOnce(textCommentParentIdResponse); const newComment = await createComment(textCommentParentIdRequestPayload); expect(getActiveClient().http.post).toHaveBeenCalledWith( '/api/v3/comments', textCommentParentIdRequestPayload, ); expect(newComment.data).toEqual(LinkedObject.comment(comment12)); }); // integration_test_id: 7f411488-abba-46d1-8707-a1d8adbd7242 it('creates text comment with invalid parent_id and returns 400400 error', async () => { client.http.post = jest .fn() .mockRejectedValueOnce( new ASCApiError('not found!', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR), ); await expect(createComment(textCommentParentIdRequestPayload)).rejects.toThrow(); }); });