@@ -13,6 +13,7 @@ import 'package:zulip/model/localizations.dart';
13
13
import 'package:zulip/model/narrow.dart' ;
14
14
import 'package:zulip/model/store.dart' ;
15
15
import 'package:zulip/model/typing_status.dart' ;
16
+ import 'package:zulip/widgets/compose_box.dart' ;
16
17
import 'package:zulip/widgets/message_list.dart' ;
17
18
18
19
import '../api/fake_api.dart' ;
@@ -34,7 +35,9 @@ import 'test_app.dart';
34
35
/// before the end of the test.
35
36
Future <Finder > setupToComposeInput (WidgetTester tester, {
36
37
List <User > users = const [],
38
+ Narrow ? narrow,
37
39
}) async {
40
+ assert (narrow is ChannelNarrow ? || narrow is SendableNarrow ? );
38
41
TypingNotifier .debugEnable = false ;
39
42
addTearDown (TypingNotifier .debugReset);
40
43
@@ -45,8 +48,24 @@ Future<Finder> setupToComposeInput(WidgetTester tester, {
45
48
await store.addUsers (users);
46
49
final connection = store.connection as FakeApiConnection ;
47
50
51
+ narrow ?? = DmNarrow (
52
+ allRecipientIds: [eg.selfUser.userId, eg.otherUser.userId],
53
+ selfUserId: eg.selfUser.userId);
48
54
// prepare message list data
49
- final message = eg.dmMessage (from: eg.selfUser, to: [eg.otherUser]);
55
+ final Message message;
56
+ switch (narrow) {
57
+ case DmNarrow ():
58
+ message = eg.dmMessage (from: eg.selfUser, to: [eg.otherUser]);
59
+ case ChannelNarrow (: final streamId):
60
+ final stream = eg.stream (streamId: streamId);
61
+ message = eg.streamMessage (stream: stream);
62
+ await store.addStream (stream);
63
+ case TopicNarrow (: final streamId, : final topic):
64
+ final stream = eg.stream (streamId: streamId);
65
+ message = eg.streamMessage (stream: stream, topic: topic.apiName);
66
+ await store.addStream (stream);
67
+ default : throw StateError ('unexpected narrow type' );
68
+ }
50
69
connection.prepare (json: GetMessagesResult (
51
70
anchor: message.id,
52
71
foundNewest: true ,
@@ -59,15 +78,13 @@ Future<Finder> setupToComposeInput(WidgetTester tester, {
59
78
prepareBoringImageHttpClient ();
60
79
61
80
await tester.pumpWidget (TestZulipApp (accountId: eg.selfAccount.id,
62
- child: MessageListPage (initNarrow: DmNarrow (
63
- allRecipientIds: [eg.selfUser.userId, eg.otherUser.userId],
64
- selfUserId: eg.selfUser.userId))));
81
+ child: MessageListPage (initNarrow: narrow)));
65
82
66
83
// global store, per-account store, and message list get loaded
67
84
await tester.pumpAndSettle ();
68
85
69
- // (hint text of compose input in a 1:1 DM)
70
- final finder = find. widgetWithText ( TextField , 'Message @${ eg . otherUser . fullName }' );
86
+ final finder = find. byWidgetPredicate ((widget) => widget is TextField
87
+ && widget.controller is ComposeContentController );
71
88
check (finder.evaluate ()).isNotEmpty ();
72
89
return finder;
73
90
}
0 commit comments