@@ -240,6 +240,49 @@ void main() {
240240 });
241241 });
242242
243+ group ('isUnread' , () {
244+ final unreadDmMessage = eg.dmMessage (
245+ from: eg.otherUser, to: [eg.selfUser], flags: []);
246+ final readDmMessage = eg.dmMessage (
247+ from: eg.otherUser, to: [eg.selfUser], flags: [MessageFlag .read]);
248+ final unreadChannelMessage = eg.streamMessage (flags: []);
249+ final readChannelMessage = eg.streamMessage (flags: [MessageFlag .read]);
250+
251+ final allMessages = [
252+ unreadDmMessage, unreadChannelMessage,
253+ readDmMessage, readChannelMessage,
254+ ];
255+
256+ void doTestCommon (String description, int messageId, {required bool expected}) {
257+ test (description, () {
258+ prepare ();
259+ model.oldUnreadsMissing = false ;
260+ fillWithMessages (allMessages);
261+ check (model.isUnread (messageId)).equals (expected);
262+ });
263+ }
264+
265+ void doTestOldUnreadsMissing (String description, int messageId, {required bool ? expected}) {
266+ assert (expected == true || expected == null );
267+ test ('oldUnreadsMissing; $description ' , () {
268+ prepare ();
269+ model.oldUnreadsMissing = true ;
270+ fillWithMessages (allMessages);
271+ check (model.isUnread (messageId)).equals (expected);
272+ });
273+ }
274+
275+ doTestCommon ('unread DM message' , unreadDmMessage.id, expected: true );
276+ doTestCommon ('read DM message' , readDmMessage.id, expected: false );
277+ doTestCommon ('unread channel message' , unreadChannelMessage.id, expected: true );
278+ doTestCommon ('read channel message' , readChannelMessage.id, expected: false );
279+
280+ doTestOldUnreadsMissing ('unread DM message' , unreadDmMessage.id, expected: true );
281+ doTestOldUnreadsMissing ('read DM message' , readDmMessage.id, expected: null );
282+ doTestOldUnreadsMissing ('unread channel message' , unreadChannelMessage.id, expected: true );
283+ doTestOldUnreadsMissing ('read channel message' , readChannelMessage.id, expected: null );
284+ });
285+
243286 group ('handleMessageEvent' , () {
244287 for (final (isUnread, isStream, isDirectMentioned, isWildcardMentioned) in [
245288 (true , true , true , true ),
0 commit comments