1+ import React from 'react' ;
2+ import ReactMarkdown from 'react-markdown' ;
13import '@testing-library/jest-dom' ;
24import { nanoid } from 'nanoid' ;
35
@@ -14,6 +16,7 @@ import {
1416
1517import { getDisplayImage , getDisplayTitle , getLatestMessagePreview } from '../utils' ;
1618import { generateStaticLocationResponse } from '../../../mock-builders' ;
19+ import { render } from '@testing-library/react' ;
1720
1821describe ( 'ChannelPreview utils' , ( ) => {
1922 const clientUser = generateUser ( ) ;
@@ -55,16 +58,45 @@ describe('ChannelPreview utils', () => {
5558 } ) ,
5659 ] ,
5760 } ) ;
61+ const channelWithHTMLInMessage = generateChannel ( {
62+ messages : [
63+ generateMessage ( {
64+ attachments : [ generateImageAttachment ( ) ] ,
65+ text :
66+ '<h1>Hello, world!</h1> \n' +
67+ '<p>This is my first web page.</p> \n' +
68+ '<p>It contains a <strong>main heading</strong> and <em> paragraph </em>.</p>' ,
69+ } ) ,
70+ ] ,
71+ } ) ;
72+
73+ const expectedTextWithHTMLRendering =
74+ '<h1>Hello, world!</h1> <p>This is my first web page.</p> <p>It contains a <strong>main heading</strong> and <em> paragraph </em>.</p>' ;
75+
76+ function isReactMarkdownElement ( x ) {
77+ return React . isValidElement ( x ) && x . type === ReactMarkdown ;
78+ }
5879
5980 it . each ( [
6081 [ 'Nothing yet...' , 'channelWithEmptyMessage' , channelWithEmptyMessage ] ,
6182 [ 'Message deleted' , 'channelWithDeletedMessage' , channelWithDeletedMessage ] ,
6283 [ '🏙 Attachment...' , 'channelWithAttachmentMessage' , channelWithAttachmentMessage ] ,
6384 [ '📍Shared location' , 'channelWithLocationMessage' , channelWithLocationMessage ] ,
85+ [
86+ expectedTextWithHTMLRendering ,
87+ 'channelWithHTMLInMessage' ,
88+ channelWithHTMLInMessage ,
89+ ] ,
6490 ] ) ( 'should return %s for %s' , async ( expectedValue , testCaseName , c ) => {
6591 const t = ( text ) => text ;
6692 const channel = await getQueriedChannelInstance ( c ) ;
67- expect ( getLatestMessagePreview ( channel , t ) ) . toBe ( expectedValue ) ;
93+ const preview = getLatestMessagePreview ( channel , t ) ;
94+ if ( isReactMarkdownElement ( preview ) ) {
95+ const { container } = render ( preview ) ;
96+ expect ( container ) . toHaveTextContent ( expectedValue ) ;
97+ } else {
98+ expect ( getLatestMessagePreview ( channel , t ) ) . toBe ( expectedValue ) ;
99+ }
68100 } ) ;
69101 } ) ;
70102
0 commit comments