import type { IMessage, IThreadMessage } from '@rocket.chat/core-typings'; import { QueryClientProvider } from '@tanstack/react-query'; import { render, screen } from '@testing-library/react'; import { expect } from 'chai'; import proxyquire from 'proxyquire'; import type { ReactNode } from 'react'; import React from 'react'; import FakeRoomProvider from '../../../../tests/mocks/client/FakeRoomProvider'; import RouterContextMock from '../../../../tests/mocks/client/RouterContextMock'; import { createFakeMessageWithMd } from '../../../../tests/mocks/data'; import { queryClient } from '../../../lib/queryClient'; import type * as ThreadMessagePreviewModule from './ThreadMessagePreview'; describe('ThreadMessagePreview', () => { const fakeMessage = createFakeMessageWithMd({ msg: 'message', }); const loadMock = (stubs?: Record) => { return proxyquire.noCallThru().load('./ThreadMessagePreview', { '../../../views/room/MessageList/hooks/useParentMessage': { useParentMessage: () => '', }, '../../../views/room/MessageList/hooks/useMessageBody': { useMessageBody: () =>

Parent Message

, }, '../../../../app/ui-utils/client': { MessageTypes: { getType: () => false, }, }, './threadPreview/ThreadMessagePreviewBody': ({ message }: { message: IMessage }) => {message.msg}, ...stubs, }).default; }; const ProvidersMock = ({ children }: { children: ReactNode }) => { return ( {children} ); }; it('should render the message when exists', () => { const ThreadMessagePreview = loadMock(); render(, { wrapper: ProvidersMock }); expect(screen.getByText(fakeMessage.msg)).to.exist; }); it('should render ignored message', () => { const ThreadMessagePreview = loadMock(); const message = { ...fakeMessage, ignored: true }; render(, { wrapper: ProvidersMock }); expect(screen.getByText('Message_Ignored')).to.exist; }); it('should render parent message', () => { const ThreadMessagePreview = loadMock({ '../../../views/room/MessageList/hooks/useParentMessage': { useParentMessage: () => ({ isSuccess: true, }), }, }); render(, { wrapper: ProvidersMock }); expect(screen.getByText('Parent Message')).to.exist; }); it('should render parent system message', () => { const ThreadMessagePreview = loadMock({ '../../../views/room/MessageList/hooks/useParentMessage': { useParentMessage: () => ({ isSuccess: true, }), }, '../../../../app/ui-utils/client': { MessageTypes: { getType: () => ({ message: 'System Message', }), }, }, }); render(, { wrapper: ProvidersMock }); expect(screen.getByText('System Message')).to.exist; }); });