@@ -375,55 +375,73 @@ describe("<TextualBody />", () => {
375375 } ) ;
376376 } ) ;
377377
378- it ( "renders url previews correctly ", ( ) => {
379- languageHandler . setMissingEntryGenerator ( ( key ) => key . split ( "|" , 2 ) [ 1 ] ) ;
378+ describe ( " url preview ", ( ) => {
379+ let matrixClient : MatrixClient ;
380380
381- const matrixClient = getMockClientWithEventEmitter ( {
382- getRoom : ( ) => mkStubRoom ( "room_id" , "room name" , undefined ) ,
383- getAccountData : ( ) : MatrixClient | undefined => undefined ,
384- getUrlPreview : ( url : string ) => new Promise ( ( ) => { } ) ,
385- isGuest : ( ) => false ,
386- mxcUrlToHttp : ( s : string ) => s ,
381+ beforeEach ( ( ) => {
382+ languageHandler . setMissingEntryGenerator ( ( key ) => key . split ( "|" , 2 ) [ 1 ] ) ;
383+ matrixClient = getMockClientWithEventEmitter ( {
384+ getRoom : ( ) => mkStubRoom ( "room_id" , "room name" , undefined ) ,
385+ getAccountData : ( ) : MatrixClient | undefined => undefined ,
386+ getUrlPreview : ( url : string ) => new Promise ( ( ) => { } ) ,
387+ isGuest : ( ) => false ,
388+ mxcUrlToHttp : ( s : string ) => s ,
389+ } ) ;
390+ DMRoomMap . makeShared ( defaultMatrixClient ) ;
387391 } ) ;
388- DMRoomMap . makeShared ( defaultMatrixClient ) ;
389392
390- const ev = mkRoomTextMessage ( "Visit https://matrix.org/" ) ;
391- const { container, rerender } = getComponent (
392- { mxEvent : ev , showUrlPreview : true , onHeightChanged : jest . fn ( ) } ,
393- matrixClient ,
394- ) ;
393+ it ( "renders url previews correctly" , ( ) => {
394+ const ev = mkRoomTextMessage ( "Visit https://matrix.org/" ) ;
395+ const { container, rerender } = getComponent (
396+ { mxEvent : ev , showUrlPreview : true , onHeightChanged : jest . fn ( ) } ,
397+ matrixClient ,
398+ ) ;
395399
396- expect ( container ) . toHaveTextContent ( ev . getContent ( ) . body ) ;
397- expect ( container . querySelector ( "a" ) ) . toHaveAttribute ( "href" , "https://matrix.org/" ) ;
400+ expect ( container ) . toHaveTextContent ( ev . getContent ( ) . body ) ;
401+ expect ( container . querySelector ( "a" ) ) . toHaveAttribute ( "href" , "https://matrix.org/" ) ;
398402
399- // simulate an event edit and check the transition from the old URL preview to the new one
400- const ev2 = mkEvent ( {
401- type : "m.room.message" ,
402- room : "room_id" ,
403- user : "sender" ,
404- content : {
405- "m.new_content" : {
406- body : "Visit https://vector.im/ and https://riot.im/" ,
407- msgtype : "m.text" ,
403+ // simulate an event edit and check the transition from the old URL preview to the new one
404+ const ev2 = mkEvent ( {
405+ type : "m.room.message" ,
406+ room : "room_id" ,
407+ user : "sender" ,
408+ content : {
409+ "m.new_content" : {
410+ body : "Visit https://vector.im/ and https://riot.im/" ,
411+ msgtype : "m.text" ,
412+ } ,
408413 } ,
409- } ,
410- event : true ,
414+ event : true ,
415+ } ) ;
416+ jest . spyOn ( ev , "replacingEventDate" ) . mockReturnValue ( new Date ( 1993 , 7 , 3 ) ) ;
417+ ev . makeReplaced ( ev2 ) ;
418+
419+ getComponent (
420+ { mxEvent : ev , showUrlPreview : true , onHeightChanged : jest . fn ( ) , replacingEventId : ev . getId ( ) } ,
421+ matrixClient ,
422+ rerender ,
423+ ) ;
424+
425+ expect ( container ) . toHaveTextContent ( ev2 . getContent ( ) [ "m.new_content" ] . body + "(edited)" ) ;
426+
427+ const links = [ "https://vector.im/" , "https://riot.im/" ] ;
428+ const anchorNodes = container . querySelectorAll ( "a" ) ;
429+ Array . from ( anchorNodes ) . forEach ( ( node , index ) => {
430+ expect ( node ) . toHaveAttribute ( "href" , links [ index ] ) ;
431+ } ) ;
411432 } ) ;
412- jest . spyOn ( ev , "replacingEventDate" ) . mockReturnValue ( new Date ( 1993 , 7 , 3 ) ) ;
413- ev . makeReplaced ( ev2 ) ;
414433
415- getComponent (
416- { mxEvent : ev , showUrlPreview : true , onHeightChanged : jest . fn ( ) , replacingEventId : ev . getId ( ) } ,
417- matrixClient ,
418- rerender ,
419- ) ;
434+ it ( "should listen to showUrlPreview change" , ( ) => {
435+ const ev = mkRoomTextMessage ( "Visit https://matrix.org/" ) ;
420436
421- expect ( container ) . toHaveTextContent ( ev2 . getContent ( ) [ "m.new_content" ] . body + "(edited)" ) ;
437+ const { container, rerender } = getComponent (
438+ { mxEvent : ev , showUrlPreview : false , onHeightChanged : jest . fn ( ) } ,
439+ matrixClient ,
440+ ) ;
441+ expect ( container . querySelector ( ".mx_LinkPreviewGroup" ) ) . toBeNull ( ) ;
422442
423- const links = [ "https://vector.im/" , "https://riot.im/" ] ;
424- const anchorNodes = container . querySelectorAll ( "a" ) ;
425- Array . from ( anchorNodes ) . forEach ( ( node , index ) => {
426- expect ( node ) . toHaveAttribute ( "href" , links [ index ] ) ;
443+ getComponent ( { mxEvent : ev , showUrlPreview : true , onHeightChanged : jest . fn ( ) } , matrixClient , rerender ) ;
444+ expect ( container . querySelector ( ".mx_LinkPreviewGroup" ) ) . toBeTruthy ( ) ;
427445 } ) ;
428446 } ) ;
429447} ) ;
0 commit comments