@@ -382,6 +382,89 @@ describe('MessageList', () => {
382382 expect ( ( ) => screen . getByText ( latestMessageText ) ) . toThrow ( ) ;
383383 } ) ;
384384 } ) ;
385+
386+ it ( "should render the UnreadMessagesIndicator when there's unread messages" , async ( ) => {
387+ const user1 = generateUser ( ) ;
388+ const user2 = generateUser ( ) ;
389+ const messages = Array . from ( { length : 10 } , ( _ , i ) =>
390+ generateMessage ( { id : `${ i } ` , text : `message-${ i } ` } ) ,
391+ ) ;
392+ const mockedChannel = generateChannelResponse ( {
393+ members : [ generateMember ( { user : user1 } ) , generateMember ( { user : user2 } ) ] ,
394+ } ) ;
395+
396+ const chatClient = await getTestClientWithUser ( { id : user1 . id } ) ;
397+ useMockedApis ( chatClient , [ getOrCreateChannelApi ( mockedChannel ) ] ) ;
398+ const channel = chatClient . channel ( 'messaging' , mockedChannel . id ) ;
399+ await channel . watch ( ) ;
400+
401+ const channelUnreadState = {
402+ unread_messages : 5 ,
403+ last_read : new Date ( ) ,
404+ last_read_message_id : '5' ,
405+ } ;
406+
407+ channel . state = {
408+ ...channelInitialState ,
409+ messages,
410+ latestMessages : [ ] ,
411+ } ;
412+
413+ const { queryByLabelText } = render (
414+ < OverlayProvider >
415+ < Chat client = { chatClient } >
416+ < Channel channel = { channel } >
417+ < MessageList channelUnreadState = { channelUnreadState } />
418+ </ Channel >
419+ </ Chat >
420+ </ OverlayProvider > ,
421+ ) ;
422+
423+ await waitFor ( ( ) => {
424+ expect ( queryByLabelText ( 'Inline unread indicator' ) ) . toBeTruthy ( ) ;
425+ } ) ;
426+ } ) ;
427+
428+ it ( "should not render the UnreadMessagesIndicator when there's no unread messages" , async ( ) => {
429+ const user1 = generateUser ( ) ;
430+ const user2 = generateUser ( ) ;
431+ const messages = Array . from ( { length : 10 } , ( _ , i ) =>
432+ generateMessage ( { id : `${ i } ` , text : `message-${ i } ` } ) ,
433+ ) ;
434+ const mockedChannel = generateChannelResponse ( {
435+ members : [ generateMember ( { user : user1 } ) , generateMember ( { user : user2 } ) ] ,
436+ } ) ;
437+
438+ const chatClient = await getTestClientWithUser ( { id : user1 . id } ) ;
439+ useMockedApis ( chatClient , [ getOrCreateChannelApi ( mockedChannel ) ] ) ;
440+ const channel = chatClient . channel ( 'messaging' , mockedChannel . id ) ;
441+ await channel . watch ( ) ;
442+
443+ const channelUnreadState = {
444+ unread_messages : 0 ,
445+ last_read : new Date ( ) ,
446+ } ;
447+
448+ channel . state = {
449+ ...channelInitialState ,
450+ messages,
451+ latestMessages : [ ] ,
452+ } ;
453+
454+ const { queryByLabelText } = render (
455+ < OverlayProvider >
456+ < Chat client = { chatClient } >
457+ < Channel channel = { channel } >
458+ < MessageList channelUnreadState = { channelUnreadState } />
459+ </ Channel >
460+ </ Chat >
461+ </ OverlayProvider > ,
462+ ) ;
463+
464+ await waitFor ( ( ) => {
465+ expect ( queryByLabelText ( 'Inline unread indicator' ) ) . not . toBeTruthy ( ) ;
466+ } ) ;
467+ } ) ;
385468} ) ;
386469
387470describe ( 'MessageList pagination' , ( ) => {
0 commit comments