@@ -233,22 +233,27 @@ hello
233
233
group ('narrowLink' , () {
234
234
test ('AllMessagesNarrow' , () {
235
235
final store = eg.store ();
236
- check (narrowLink (store, const AllMessagesNarrow ())).equals (store.account.realmUrl.resolve ('#narrow' ));
236
+ check (narrowLink (store, const AllMessagesNarrow ()))
237
+ .equals (store.account.realmUrl.resolve ('#narrow' ));
238
+ check (narrowLink (store, const AllMessagesNarrow (), nearMessageId: 1 ))
239
+ .equals (store.account.realmUrl.resolve ('#narrow/near/1' ));
237
240
});
238
241
239
242
test ('StreamNarrow / TopicNarrow' , () {
240
243
void checkNarrow (String expectedFragment, {
241
244
required int streamId,
242
245
required String name,
243
246
String ? topic,
247
+ int ? nearMessageId,
244
248
}) {
245
249
assert (expectedFragment.startsWith ('#' ), 'wrong-looking expectedFragment' );
246
250
final store = eg.store ();
247
251
store.addStream (eg.stream (streamId: streamId, name: name));
248
252
final narrow = topic == null
249
253
? StreamNarrow (streamId)
250
254
: TopicNarrow (streamId, topic);
251
- check (narrowLink (store, narrow)).equals (store.account.realmUrl.resolve (expectedFragment));
255
+ check (narrowLink (store, narrow, nearMessageId: nearMessageId))
256
+ .equals (store.account.realmUrl.resolve (expectedFragment));
252
257
}
253
258
254
259
checkNarrow (streamId: 1 , name: 'announce' , '#narrow/stream/1-announce' );
@@ -257,26 +262,32 @@ hello
257
262
checkNarrow (streamId: 415 , name: 'chat.zulip.org' , '#narrow/stream/415-chat.2Ezulip.2Eorg' );
258
263
checkNarrow (streamId: 419 , name: 'français' , '#narrow/stream/419-fran.C3.A7ais' );
259
264
checkNarrow (streamId: 403 , name: 'Hshs[™~}(.' , '#narrow/stream/403-Hshs.5B.E2.84.A2~.7D.28.2E' );
265
+ checkNarrow (streamId: 60 , name: 'twitter' , nearMessageId: 1570686 , '#narrow/stream/60-twitter/near/1570686' );
260
266
261
267
checkNarrow (streamId: 48 , name: 'mobile' , topic: 'Welcome screen UI' ,
262
268
'#narrow/stream/48-mobile/topic/Welcome.20screen.20UI' );
263
269
checkNarrow (streamId: 243 , name: 'mobile-team' , topic: 'Podfile.lock clash #F92' ,
264
270
'#narrow/stream/243-mobile-team/topic/Podfile.2Elock.20clash.20.23F92' );
265
271
checkNarrow (streamId: 377 , name: 'translation/zh_tw' , topic: '翻譯 "stream"' ,
266
272
'#narrow/stream/377-translation.2Fzh_tw/topic/.E7.BF.BB.E8.AD.AF.20.22stream.22' );
273
+ checkNarrow (streamId: 42 , name: 'Outreachy 2016-2017' , topic: '2017-18 Stream?' , nearMessageId: 302690 ,
274
+ '#narrow/stream/42-Outreachy-2016-2017/topic/2017-18.20Stream.3F/near/302690' );
267
275
});
268
276
269
277
test ('DmNarrow' , () {
270
278
void checkNarrow (String expectedFragment, String legacyExpectedFragment, {
271
279
required List <int > allRecipientIds,
272
280
required int selfUserId,
281
+ int ? nearMessageId,
273
282
}) {
274
283
assert (expectedFragment.startsWith ('#' ), 'wrong-looking expectedFragment' );
275
284
final store = eg.store ();
276
285
final narrow = DmNarrow (allRecipientIds: allRecipientIds, selfUserId: selfUserId);
277
- check (narrowLink (store, narrow)).equals (store.account.realmUrl.resolve (expectedFragment));
286
+ check (narrowLink (store, narrow, nearMessageId: nearMessageId))
287
+ .equals (store.account.realmUrl.resolve (expectedFragment));
278
288
store.connection.zulipFeatureLevel = 176 ;
279
- check (narrowLink (store, narrow)).equals (store.account.realmUrl.resolve (legacyExpectedFragment));
289
+ check (narrowLink (store, narrow, nearMessageId: nearMessageId))
290
+ .equals (store.account.realmUrl.resolve (legacyExpectedFragment));
280
291
}
281
292
282
293
checkNarrow (allRecipientIds: [1 ], selfUserId: 1 ,
@@ -291,6 +302,9 @@ hello
291
302
checkNarrow (allRecipientIds: [1 , 2 , 3 , 4 ], selfUserId: 4 ,
292
303
'#narrow/dm/1,2,3,4-group' ,
293
304
'#narrow/pm-with/1,2,3,4-group' );
305
+ checkNarrow (allRecipientIds: [1 , 2 ], selfUserId: 1 , nearMessageId: 12345 ,
306
+ '#narrow/dm/1,2-dm/near/12345' ,
307
+ '#narrow/pm-with/1,2-pm/near/12345' );
294
308
});
295
309
296
310
// TODO other Narrow subclasses as we add them:
0 commit comments