import type { IMessage } from '@rocket.chat/core-typings'; import { mockAppRoot } from '@rocket.chat/mock-providers'; import { render, screen } from '@testing-library/react'; import RoomMessage from './RoomMessage'; import { MessageListContext, messageListContextDefaultValue } from '../list/MessageListContext'; const message: IMessage = { ts: new Date('2021-10-27T00:00:00.000Z'), u: { _id: 'userId', name: 'userName', username: 'userName', }, msg: 'message body', md: [ { type: 'PARAGRAPH', value: [ { type: 'PLAIN_TEXT', value: 'message body', }, ], }, ], rid: 'roomId', _id: 'messageId', _updatedAt: new Date('2021-10-27T00:00:00.000Z'), urls: [], }; jest.mock('../header/hooks/useMessageRoles', () => ({ useMessageRoles: () => [], })); jest.mock('../../../lib/utils/fireGlobalEvent', () => ({ fireGlobalEvent: () => undefined })); jest.mock('../../../views/room/hooks/useGoToRoom', () => ({ useGoToRoom: () => undefined })); jest.mock('../../../views/room/contextualBar/Threads/hooks/useGetMessageByID', () => undefined); jest.mock('../../../views/room/MessageList/hooks/useAutoTranslate', () => ({ useAutoTranslate: () => ({ autoTranslateEnabled: false, autoTranslateLanguage: '', showAutoTranslate: () => false, }), })); jest.mock('../../../lib/actionLinks', () => undefined); jest.mock('../../../lib/RoomManager', () => ({ RoomManager: { getStore: jest.fn() }, useOpenedRoom: () => undefined, getCollapsibleEventKey: (key: string) => `collapsibleToggled-${key}`, })); it('should show normal message', () => { render( , { wrapper: mockAppRoot().build(), }, ); expect(screen.getByRole('figure')).toBeInTheDocument(); expect(screen.getByText('message body')).toBeInTheDocument(); expect(screen.queryByRole('button', { name: 'Message_Ignored' })).not.toBeInTheDocument(); }); it('should show fallback content for ignored user', () => { render( , { wrapper: mockAppRoot().build(), }, ); expect(screen.getByRole('figure')).toBeInTheDocument(); expect(screen.queryByText('message body')).not.toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Message_Ignored' })).toBeInTheDocument(); }); it('should show ignored message', () => { render( , { wrapper: mockAppRoot().build(), }, ); expect(screen.getByRole('figure')).toBeInTheDocument(); expect(screen.queryByText('message body')).not.toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Message_Ignored' })).toBeInTheDocument(); }); it('should show read receipt', () => { render( , { wrapper: mockAppRoot() .wrap((children) => ( {children} )) .build(), }, ); expect(screen.getByRole('status', { name: 'Message_viewed' })).toBeInTheDocument(); }); it('should not show read receipt if receipt is disabled', () => { render( , { wrapper: mockAppRoot() .wrap((children) => ( {children} )) .build(), }, ); expect(screen.queryByRole('status', { name: 'Message_viewed' })).not.toBeInTheDocument(); });