@@ -740,11 +740,36 @@ class ChatChannelViewModel_Tests: StreamChatTestCase {
740740 XCTAssertEqual ( 1 , channelController. markReadCallCount)
741741 }
742742
743- func test_chatChannelVM_sendReadEventIfNeeded_whenChannelHasNoUnreadMessages ( ) {
743+ func test_chatChannelVM_sendReadEventIfNeeded_whenChannelHasNoReads_thenMarkReadIsCalled ( ) {
744744 // Given
745745 let message = ChatMessage . mock ( )
746746 let channelController = makeChannelController ( messages: [ message] )
747- channelController. channel_mock = . mock( cid: . unique, unreadCount: ChannelUnreadCount ( messages: 0 , mentions: 0 ) )
747+ channelController. channel_mock = . mockDMChannel( reads: [ ] )
748+ channelController. hasLoadedAllNextMessages_mock = true
749+ let viewModel = ChatChannelViewModel ( channelController: channelController)
750+ viewModel. currentUserMarkedMessageUnread = false
751+ viewModel. throttler = Throttler_Mock ( interval: 0 )
752+
753+ // When
754+ viewModel. handleMessageAppear ( index: 0 , scrollDirection: . down)
755+
756+ // Then
757+ XCTAssertEqual ( 1 , channelController. markReadCallCount)
758+ }
759+
760+ func test_chatChannelVM_sendReadEventIfNeeded_whenChannelReadHasMoreRecentTimestamp_thenMarkReadIsNotCalled( ) {
761+ // Given
762+ let message = ChatMessage . mock ( )
763+ let channelController = makeChannelController ( messages: [ message] )
764+ channelController. channel_mock = . mockDMChannel(
765+ reads: [ . mock(
766+ lastReadAt: . distantFuture,
767+ lastReadMessageId: . unique,
768+ unreadMessagesCount: 0 ,
769+ user: . mock( id: chatClient. currentUserId ?? " " )
770+ ) ]
771+ )
772+ channelController. hasLoadedAllNextMessages_mock = true
748773 let viewModel = ChatChannelViewModel ( channelController: channelController)
749774 viewModel. currentUserMarkedMessageUnread = false
750775 viewModel. throttler = Throttler_Mock ( interval: 0 )
0 commit comments