@@ -7,6 +7,32 @@ import 'package:zulip/model/narrow.dart';
77import '../example_data.dart' as eg;
88import 'narrow_checks.dart' ;
99
10+ /// A [MessageBase] subclass for testing.
11+ // TODO(#1441): switch to outbox-messages instead
12+ sealed class _TestMessage <T extends Conversation > extends MessageBase <T > {
13+ @override
14+ final int ? id = null ;
15+
16+ _TestMessage () : super (senderId: eg.selfUser.userId, timestamp: 123456789 );
17+ }
18+
19+ class _TestStreamMessage extends _TestMessage <StreamConversation > {
20+ @override
21+ final StreamConversation conversation;
22+
23+ _TestStreamMessage ({required ZulipStream stream, required String topic})
24+ : conversation = StreamConversation (
25+ stream.streamId, TopicName (topic), displayRecipient: null );
26+ }
27+
28+ class _TestDmMessage extends _TestMessage <DmConversation > {
29+ @override
30+ final DmConversation conversation;
31+
32+ _TestDmMessage ({required List <int > allRecipientIds})
33+ : conversation = DmConversation (allRecipientIds: allRecipientIds);
34+ }
35+
1036void main () {
1137 group ('SendableNarrow' , () {
1238 test ('ofMessage: stream message' , () {
@@ -33,6 +59,13 @@ void main() {
3359 eg.streamMessage (stream: otherStream, topic: 'topic' ))).isFalse ();
3460 check (narrow.containsMessage (
3561 eg.streamMessage (stream: stream, topic: 'topic' ))).isTrue ();
62+
63+ check (narrow.containsMessage (
64+ _TestDmMessage (allRecipientIds: [1 ]))).isFalse ();
65+ check (narrow.containsMessage (
66+ _TestStreamMessage (stream: otherStream, topic: 'topic' ))).isFalse ();
67+ check (narrow.containsMessage (
68+ _TestStreamMessage (stream: stream, topic: 'topic' ))).isTrue ();
3669 });
3770 });
3871
@@ -56,6 +89,15 @@ void main() {
5689 eg.streamMessage (stream: stream, topic: 'topic2' ))).isFalse ();
5790 check (narrow.containsMessage (
5891 eg.streamMessage (stream: stream, topic: 'topic' ))).isTrue ();
92+
93+ check (narrow.containsMessage (
94+ _TestDmMessage (allRecipientIds: [1 ]))).isFalse ();
95+ check (narrow.containsMessage (
96+ _TestStreamMessage (stream: otherStream, topic: 'topic' ))).isFalse ();
97+ check (narrow.containsMessage (
98+ _TestStreamMessage (stream: stream, topic: 'topic2' ))).isFalse ();
99+ check (narrow.containsMessage (
100+ _TestStreamMessage (stream: stream, topic: 'topic' ))).isTrue ();
59101 });
60102 });
61103
@@ -176,6 +218,19 @@ void main() {
176218 check (narrow123.containsMessage (dm (user2, [user1, user3]))).isTrue ();
177219 check (narrow123.containsMessage (dm (user3, [user1, user2]))).isTrue ();
178220 });
221+
222+ test ('containsMessage with non-Message' , () {
223+ final narrow = DmNarrow (allRecipientIds: [1 , 2 ], selfUserId: 2 );
224+
225+ check (narrow.containsMessage (
226+ _TestStreamMessage (stream: eg.stream (), topic: 'topic' ))).isFalse ();
227+ check (narrow.containsMessage (
228+ _TestDmMessage (allRecipientIds: [2 ]))).isFalse ();
229+ check (narrow.containsMessage (
230+ _TestDmMessage (allRecipientIds: [2 , 3 ]))).isFalse ();
231+ check (narrow.containsMessage (
232+ _TestDmMessage (allRecipientIds: [1 , 2 ]))).isTrue ();
233+ });
179234 });
180235
181236 group ('MentionsNarrow' , () {
@@ -188,6 +243,11 @@ void main() {
188243 eg.streamMessage (flags: [MessageFlag .mentioned]))).isTrue ();
189244 check (narrow.containsMessage (
190245 eg.streamMessage (flags: [MessageFlag .wildcardMentioned]))).isTrue ();
246+
247+ check (narrow.containsMessage (
248+ _TestStreamMessage (stream: eg.stream (), topic: 'topic' ))).isFalse ();
249+ check (narrow.containsMessage (
250+ _TestDmMessage (allRecipientIds: [eg.selfUser.userId]))).isFalse ();
191251 });
192252 });
193253
@@ -199,6 +259,11 @@ void main() {
199259 eg.streamMessage (flags: []))).isFalse ();
200260 check (narrow.containsMessage (
201261 eg.streamMessage (flags: [MessageFlag .starred]))).isTrue ();
262+
263+ check (narrow.containsMessage (
264+ _TestStreamMessage (stream: eg.stream (), topic: 'topic' ))).isFalse ();
265+ check (narrow.containsMessage (
266+ _TestDmMessage (allRecipientIds: [eg.selfUser.userId]))).isFalse ();
202267 });
203268 });
204269}
0 commit comments