@@ -39,14 +39,22 @@ void main() {
39
39
final contentInputFinder = find.byWidgetPredicate (
40
40
(widget) => widget is TextField && widget.controller is ComposeContentController );
41
41
42
- Future <GlobalKey <ComposeBoxController >> prepareComposeBox (WidgetTester tester,
43
- {required Narrow narrow, List <User > users = const []}) async {
42
+ Future <GlobalKey <ComposeBoxController >> prepareComposeBox (WidgetTester tester, {
43
+ required Narrow narrow,
44
+ List <User > users = const [],
45
+ List <ZulipStream > streams = const [],
46
+ }) async {
47
+ if (narrow case ChannelNarrow (: var streamId) || TopicNarrow (: var streamId)) {
48
+ assert (streams.any ((stream) => stream.streamId == streamId),
49
+ 'Add a channel with "streamId" the same as of $narrow .streamId to the store.' );
50
+ }
44
51
addTearDown (testBinding.reset);
45
52
await testBinding.globalStore.add (eg.selfAccount, eg.initialSnapshot ());
46
53
47
54
store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
48
55
49
56
await store.addUsers ([eg.selfUser, ...users]);
57
+ await store.addStreams (streams);
50
58
connection = store.connection as FakeApiConnection ;
51
59
52
60
final controllerKey = GlobalKey <ComposeBoxController >();
@@ -205,22 +213,25 @@ void main() {
205
213
}
206
214
207
215
testWidgets ('_StreamComposeBox' , (tester) async {
216
+ final channel = eg.stream ();
208
217
final key = await prepareComposeBox (tester,
209
- narrow: ChannelNarrow (eg. stream (). streamId));
218
+ narrow: ChannelNarrow (channel. streamId), streams : [channel] );
210
219
checkComposeBoxTextFields (tester, controllerKey: key,
211
220
expectTopicTextField: true );
212
221
});
213
222
214
223
testWidgets ('_FixedDestinationComposeBox' , (tester) async {
224
+ final channel = eg.stream ();
215
225
final key = await prepareComposeBox (tester,
216
- narrow: TopicNarrow . ofMessage (eg. streamMessage ()) );
226
+ narrow: TopicNarrow (channel.streamId, 'topic' ), streams : [channel] );
217
227
checkComposeBoxTextFields (tester, controllerKey: key,
218
228
expectTopicTextField: false );
219
229
});
220
230
});
221
231
222
232
group ('ComposeBox typing notices' , () {
223
- const narrow = TopicNarrow (123 , 'some topic' );
233
+ final channel = eg.stream ();
234
+ final narrow = TopicNarrow (channel.streamId, 'some topic' );
224
235
225
236
void checkTypingRequest (TypingOp op, SendableNarrow narrow) =>
226
237
checkSetTypingStatusRequests (connection.takeRequests (), [(op, narrow)]);
@@ -232,7 +243,7 @@ void main() {
232
243
}
233
244
234
245
testWidgets ('smoke TopicNarrow' , (tester) async {
235
- await prepareComposeBox (tester, narrow: narrow);
246
+ await prepareComposeBox (tester, narrow: narrow, streams : [channel] );
236
247
237
248
await checkStartTyping (tester, narrow);
238
249
@@ -254,9 +265,9 @@ void main() {
254
265
});
255
266
256
267
testWidgets ('smoke ChannelNarrow' , (tester) async {
257
- const narrow = ChannelNarrow (123 );
268
+ final narrow = ChannelNarrow (channel.streamId );
258
269
final destinationNarrow = TopicNarrow (narrow.streamId, 'test topic' );
259
- await prepareComposeBox (tester, narrow: narrow);
270
+ await prepareComposeBox (tester, narrow: narrow, streams : [channel] );
260
271
await enterTopic (tester, narrow: narrow, topic: destinationNarrow.topic);
261
272
262
273
await checkStartTyping (tester, destinationNarrow);
@@ -267,7 +278,7 @@ void main() {
267
278
});
268
279
269
280
testWidgets ('clearing text sends a "typing stopped" notice' , (tester) async {
270
- await prepareComposeBox (tester, narrow: narrow);
281
+ await prepareComposeBox (tester, narrow: narrow, streams : [channel] );
271
282
272
283
await checkStartTyping (tester, narrow);
273
284
@@ -277,7 +288,7 @@ void main() {
277
288
});
278
289
279
290
testWidgets ('hitting send button sends a "typing stopped" notice' , (tester) async {
280
- await prepareComposeBox (tester, narrow: narrow);
291
+ await prepareComposeBox (tester, narrow: narrow, streams : [channel] );
281
292
282
293
await checkStartTyping (tester, narrow);
283
294
@@ -295,13 +306,14 @@ void main() {
295
306
await testBinding.globalStore.add (eg.selfAccount, eg.initialSnapshot ());
296
307
297
308
store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
309
+ await store.addStream (channel);
298
310
connection = store.connection as FakeApiConnection ;
299
311
300
312
await tester.pumpWidget (const ZulipApp ());
301
313
await tester.pump ();
302
314
final navigator = await ZulipApp .navigator;
303
315
unawaited (navigator.push (MaterialAccountWidgetRoute (
304
- accountId: eg.selfAccount.id, page: const ComposeBox (narrow: narrow))));
316
+ accountId: eg.selfAccount.id, page: ComposeBox (narrow: narrow))));
305
317
await tester.pumpAndSettle ();
306
318
}
307
319
@@ -317,9 +329,9 @@ void main() {
317
329
});
318
330
319
331
testWidgets ('for content input, unfocusing sends a "typing stopped" notice' , (tester) async {
320
- const narrow = ChannelNarrow (123 );
332
+ final narrow = ChannelNarrow (channel.streamId );
321
333
final destinationNarrow = TopicNarrow (narrow.streamId, 'test topic' );
322
- await prepareComposeBox (tester, narrow: narrow);
334
+ await prepareComposeBox (tester, narrow: narrow, streams : [channel] );
323
335
await enterTopic (tester, narrow: narrow, topic: destinationNarrow.topic);
324
336
325
337
await checkStartTyping (tester, destinationNarrow);
@@ -331,7 +343,7 @@ void main() {
331
343
});
332
344
333
345
testWidgets ('selection change sends a "typing started" notice' , (tester) async {
334
- final controllerKey = await prepareComposeBox (tester, narrow: narrow);
346
+ final controllerKey = await prepareComposeBox (tester, narrow: narrow, streams : [channel] );
335
347
final composeBoxController = controllerKey.currentState! ;
336
348
337
349
await checkStartTyping (tester, narrow);
@@ -352,7 +364,7 @@ void main() {
352
364
});
353
365
354
366
testWidgets ('unfocusing app sends a "typing stopped" notice' , (tester) async {
355
- await prepareComposeBox (tester, narrow: narrow);
367
+ await prepareComposeBox (tester, narrow: narrow, streams : [channel] );
356
368
357
369
await checkStartTyping (tester, narrow);
358
370
@@ -382,7 +394,8 @@ void main() {
382
394
addTearDown (TypingNotifier .debugReset);
383
395
384
396
final zulipLocalizations = GlobalLocalizations .zulipLocalizations;
385
- await prepareComposeBox (tester, narrow: const TopicNarrow (123 , 'some topic' ));
397
+ await prepareComposeBox (tester, narrow: const TopicNarrow (123 , 'some topic' ),
398
+ streams: [eg.stream (streamId: 123 )]);
386
399
387
400
await tester.enterText (contentInputFinder, 'hello world' );
388
401
@@ -447,8 +460,10 @@ void main() {
447
460
TypingNotifier .debugEnable = false ;
448
461
addTearDown (TypingNotifier .debugReset);
449
462
450
- final narrow = ChannelNarrow (eg.stream ().streamId);
451
- final controllerKey = await prepareComposeBox (tester, narrow: narrow);
463
+ final channel = eg.stream ();
464
+ final narrow = ChannelNarrow (channel.streamId);
465
+ final controllerKey = await prepareComposeBox (tester,
466
+ narrow: narrow, streams: [channel]);
452
467
final composeBoxController = controllerKey.currentState! ;
453
468
454
469
// (When we check that the send button looks disabled, it should be because
@@ -507,8 +522,10 @@ void main() {
507
522
TypingNotifier .debugEnable = false ;
508
523
addTearDown (TypingNotifier .debugReset);
509
524
510
- final narrow = ChannelNarrow (eg.stream ().streamId);
511
- final controllerKey = await prepareComposeBox (tester, narrow: narrow);
525
+ final channel = eg.stream ();
526
+ final narrow = ChannelNarrow (channel.streamId);
527
+ final controllerKey = await prepareComposeBox (tester,
528
+ narrow: narrow, streams: [channel]);
512
529
final composeBoxController = controllerKey.currentState! ;
513
530
514
531
// (When we check that the send button looks disabled, it should be because
0 commit comments