import React from 'react'; import { Text } from 'react-native'; import { cleanup, render, waitFor } from '@testing-library/react-native'; import { LocalMessage } from 'stream-chat'; import { WithComponents } from '../../../../contexts/componentsContext/ComponentsContext'; import { OverlayProvider } from '../../../../contexts/overlayContext/OverlayProvider'; import { ThemeProvider } from '../../../../contexts/themeContext/ThemeContext'; import { defaultTheme } from '../../../../contexts/themeContext/utils/theme'; import { getOrCreateChannelApi } from '../../../../mock-builders/api/getOrCreateChannel'; import { useMockedApis } from '../../../../mock-builders/api/useMockedApis'; import { generateChannelResponse } from '../../../../mock-builders/generator/channel'; import { generateMessage, generateStaticMessage, } from '../../../../mock-builders/generator/message'; import { generateStaticUser } from '../../../../mock-builders/generator/user'; import { getTestClientWithUser } from '../../../../mock-builders/mock'; import { Channel } from '../../../Channel/Channel'; import { Chat } from '../../../Chat/Chat'; import { MessageList } from '../../../MessageList/MessageList'; import { MessageTextContainer } from '../MessageTextContainer'; describe('MessageTextContainer', () => { afterEach(cleanup); it('should render message text container', async () => { const staticUser = generateStaticUser(1); const message = generateMessage({ user: { ...staticUser, image: undefined }, }); const { getByTestId, getByText, rerender, toJSON } = render( , ); await waitFor(() => { expect(getByTestId('message-text-container')).toBeTruthy(); expect(getByText(message.text)).toBeTruthy(); }); rerender( {message?.text}, }} > , ); await waitFor(() => { expect(getByTestId('message-text-container')).toBeTruthy(); expect(getByTestId('message-text')).toBeTruthy(); expect(getByText(message.text)).toBeTruthy(); }); const staticMessage = generateStaticMessage('Hello World', { user: staticUser, }); rerender( , ); await waitFor(() => { expect(toJSON()).toMatchSnapshot(); }); }); it('should display a translated message if applicable', async () => { const chatClient = await getTestClientWithUser({ id: 'mads', language: 'no' }); const message = { i18n: { no_text: 'Hallo verden!', }, text: 'Hello world!', }; const mockedChannel = generateChannelResponse({ id: 'chans', messages: [message], }); useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]); const channel = chatClient.channel('messaging', 'chans'); await channel.watch(); const TestComponent = () => ( ); const { getByText } = render(); await waitFor(() => { expect(getByText(message.i18n.no_text)).toBeTruthy(); }); }); });