@@ -195,22 +195,27 @@ hello
195
195
group ('narrowLink' , () {
196
196
test ('AllMessagesNarrow' , () {
197
197
final store = eg.store ();
198
- check (narrowLink (store, const AllMessagesNarrow ())).equals (store.account.realmUrl.resolve ('#narrow' ));
198
+ check (narrowLink (store, const AllMessagesNarrow ()))
199
+ .equals (store.account.realmUrl.resolve ('#narrow' ));
200
+ check (narrowLink (store, const AllMessagesNarrow (), nearMessageId: 1 ))
201
+ .equals (store.account.realmUrl.resolve ('#narrow/near/1' ));
199
202
});
200
203
201
204
test ('StreamNarrow / TopicNarrow' , () {
202
205
void checkNarrow (String expectedFragment, {
203
206
required int streamId,
204
207
required String name,
205
208
String ? topic,
209
+ int ? nearMessageId,
206
210
}) {
207
211
assert (expectedFragment.startsWith ('#' ), 'wrong-looking expectedFragment' );
208
212
final store = eg.store ();
209
213
store.addStream (eg.stream (streamId: streamId, name: name));
210
214
final narrow = topic == null
211
215
? StreamNarrow (streamId)
212
216
: TopicNarrow (streamId, topic);
213
- check (narrowLink (store, narrow)).equals (store.account.realmUrl.resolve (expectedFragment));
217
+ check (narrowLink (store, narrow, nearMessageId: nearMessageId))
218
+ .equals (store.account.realmUrl.resolve (expectedFragment));
214
219
}
215
220
216
221
checkNarrow (streamId: 1 , name: 'announce' , '#narrow/stream/1-announce' );
@@ -219,26 +224,32 @@ hello
219
224
checkNarrow (streamId: 415 , name: 'chat.zulip.org' , '#narrow/stream/415-chat.2Ezulip.2Eorg' );
220
225
checkNarrow (streamId: 419 , name: 'français' , '#narrow/stream/419-fran.C3.A7ais' );
221
226
checkNarrow (streamId: 403 , name: 'Hshs[™~}(.' , '#narrow/stream/403-Hshs.5B.E2.84.A2~.7D.28.2E' );
227
+ checkNarrow (streamId: 60 , name: 'twitter' , nearMessageId: 1570686 , '#narrow/stream/60-twitter/near/1570686' );
222
228
223
229
checkNarrow (streamId: 48 , name: 'mobile' , topic: 'Welcome screen UI' ,
224
230
'#narrow/stream/48-mobile/topic/Welcome.20screen.20UI' );
225
231
checkNarrow (streamId: 243 , name: 'mobile-team' , topic: 'Podfile.lock clash #F92' ,
226
232
'#narrow/stream/243-mobile-team/topic/Podfile.2Elock.20clash.20.23F92' );
227
233
checkNarrow (streamId: 377 , name: 'translation/zh_tw' , topic: '翻譯 "stream"' ,
228
234
'#narrow/stream/377-translation.2Fzh_tw/topic/.E7.BF.BB.E8.AD.AF.20.22stream.22' );
235
+ checkNarrow (streamId: 42 , name: 'Outreachy 2016-2017' , topic: '2017-18 Stream?' , nearMessageId: 302690 ,
236
+ '#narrow/stream/42-Outreachy-2016-2017/topic/2017-18.20Stream.3F/near/302690' );
229
237
});
230
238
231
239
test ('DmNarrow' , () {
232
240
void checkNarrow (String expectedFragment, String legacyExpectedFragment, {
233
241
required List <int > allRecipientIds,
234
242
required int selfUserId,
243
+ int ? nearMessageId,
235
244
}) {
236
245
assert (expectedFragment.startsWith ('#' ), 'wrong-looking expectedFragment' );
237
246
final store = eg.store ();
238
247
final narrow = DmNarrow (allRecipientIds: allRecipientIds, selfUserId: selfUserId);
239
- check (narrowLink (store, narrow)).equals (store.account.realmUrl.resolve (expectedFragment));
248
+ check (narrowLink (store, narrow, nearMessageId: nearMessageId))
249
+ .equals (store.account.realmUrl.resolve (expectedFragment));
240
250
store.connection.zulipFeatureLevel = 176 ;
241
- check (narrowLink (store, narrow)).equals (store.account.realmUrl.resolve (legacyExpectedFragment));
251
+ check (narrowLink (store, narrow, nearMessageId: nearMessageId))
252
+ .equals (store.account.realmUrl.resolve (legacyExpectedFragment));
242
253
}
243
254
244
255
checkNarrow (allRecipientIds: [1 ], selfUserId: 1 ,
@@ -253,6 +264,9 @@ hello
253
264
checkNarrow (allRecipientIds: [1 , 2 , 3 , 4 ], selfUserId: 4 ,
254
265
'#narrow/dm/1,2,3,4-group' ,
255
266
'#narrow/pm-with/1,2,3,4-group' );
267
+ checkNarrow (allRecipientIds: [1 , 2 ], selfUserId: 1 , nearMessageId: 12345 ,
268
+ '#narrow/dm/1,2-dm/near/12345' ,
269
+ '#narrow/pm-with/1,2-pm/near/12345' );
256
270
});
257
271
258
272
// TODO other Narrow subclasses as we add them:
0 commit comments