Skip to content

Commit a26f16f

Browse files
committed
autocomplete test: Make setupToComposeInput accept narrow param
This will become handy for setting up a compose box in different types of narrows where compose box is supported.
1 parent 8053da0 commit a26f16f

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

test/widgets/autocomplete_test.dart

+23-6
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import 'package:zulip/model/localizations.dart';
1313
import 'package:zulip/model/narrow.dart';
1414
import 'package:zulip/model/store.dart';
1515
import 'package:zulip/model/typing_status.dart';
16+
import 'package:zulip/widgets/compose_box.dart';
1617
import 'package:zulip/widgets/message_list.dart';
1718

1819
import '../api/fake_api.dart';
@@ -34,7 +35,9 @@ import 'test_app.dart';
3435
/// before the end of the test.
3536
Future<Finder> setupToComposeInput(WidgetTester tester, {
3637
List<User> users = const [],
38+
Narrow? narrow,
3739
}) async {
40+
assert(narrow is ChannelNarrow? || narrow is SendableNarrow?);
3841
TypingNotifier.debugEnable = false;
3942
addTearDown(TypingNotifier.debugReset);
4043

@@ -45,8 +48,24 @@ Future<Finder> setupToComposeInput(WidgetTester tester, {
4548
await store.addUsers(users);
4649
final connection = store.connection as FakeApiConnection;
4750

51+
narrow ??= DmNarrow(
52+
allRecipientIds: [eg.selfUser.userId, eg.otherUser.userId],
53+
selfUserId: eg.selfUser.userId);
4854
// 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+
}
5069
connection.prepare(json: GetMessagesResult(
5170
anchor: message.id,
5271
foundNewest: true,
@@ -59,15 +78,13 @@ Future<Finder> setupToComposeInput(WidgetTester tester, {
5978
prepareBoringImageHttpClient();
6079

6180
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)));
6582

6683
// global store, per-account store, and message list get loaded
6784
await tester.pumpAndSettle();
6885

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);
7188
check(finder.evaluate()).isNotEmpty();
7289
return finder;
7390
}

0 commit comments

Comments
 (0)