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