Skip to content

Commit d70e4bc

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 2e6fd05 commit d70e4bc

File tree

1 file changed

+49
-6
lines changed

1 file changed

+49
-6
lines changed

test/widgets/autocomplete_test.dart

+49-6
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ import 'test_app.dart';
3333
/// before the end of the test.
3434
Future<Finder> setupToComposeInput(WidgetTester tester, {
3535
List<User> users = const [],
36+
Narrow? narrow,
3637
}) async {
38+
assert(narrow is ChannelNarrow? || narrow is SendableNarrow?);
3739
TypingNotifier.debugEnable = false;
3840
addTearDown(TypingNotifier.debugReset);
3941

@@ -44,8 +46,24 @@ Future<Finder> setupToComposeInput(WidgetTester tester, {
4446
await store.addUsers(users);
4547
final connection = store.connection as FakeApiConnection;
4648

49+
narrow ??= DmNarrow(
50+
allRecipientIds: [eg.selfUser.userId, eg.otherUser.userId],
51+
selfUserId: eg.selfUser.userId);
4752
// prepare message list data
48-
final message = eg.dmMessage(from: eg.selfUser, to: [eg.otherUser]);
53+
final Message message;
54+
switch(narrow) {
55+
case DmNarrow():
56+
message = eg.dmMessage(from: eg.selfUser, to: [eg.otherUser]);
57+
case ChannelNarrow(:final streamId):
58+
final stream = eg.stream(streamId: streamId);
59+
message = eg.streamMessage(stream: stream);
60+
await store.addStream(stream);
61+
case TopicNarrow(:final streamId, :final topic):
62+
final stream = eg.stream(streamId: streamId);
63+
message = eg.streamMessage(stream: stream, topic: topic);
64+
await store.addStream(stream);
65+
default: throw StateError('unexpected narrow type');
66+
}
4967
connection.prepare(json: GetMessagesResult(
5068
anchor: message.id,
5169
foundNewest: true,
@@ -58,19 +76,44 @@ Future<Finder> setupToComposeInput(WidgetTester tester, {
5876
prepareBoringImageHttpClient();
5977

6078
await tester.pumpWidget(TestZulipApp(accountId: eg.selfAccount.id,
61-
child: MessageListPage(initNarrow: DmNarrow(
62-
allRecipientIds: [eg.selfUser.userId, eg.otherUser.userId],
63-
selfUserId: eg.selfUser.userId))));
79+
child: MessageListPage(initNarrow: narrow)));
6480

6581
// global store, per-account store, and message list get loaded
6682
await tester.pumpAndSettle();
6783

68-
// (hint text of compose input in a 1:1 DM)
69-
final finder = find.widgetWithText(TextField, 'Message @${eg.otherUser.fullName}');
84+
final finder = find.widgetWithText(TextField,
85+
_composeInputHintTextFor(narrow, store: store));
7086
check(finder.evaluate()).isNotEmpty();
7187
return finder;
7288
}
7389

90+
String _composeInputHintTextFor(Narrow narrow, {required PerAccountStore store}) {
91+
assert(narrow is ChannelNarrow || narrow is SendableNarrow);
92+
final localizations = GlobalLocalizations.zulipLocalizations;
93+
switch (narrow) {
94+
case ChannelNarrow(:final streamId):
95+
final streamName = store.streams[streamId]?.name
96+
?? localizations.composeBoxUnknownChannelName;
97+
return localizations.composeBoxChannelContentHint(streamName, kNoTopicTopic);
98+
case TopicNarrow(:final streamId, :final topic):
99+
final streamName = store.streams[streamId]?.name
100+
?? localizations.composeBoxUnknownChannelName;
101+
return localizations.composeBoxChannelContentHint(streamName, topic);
102+
case DmNarrow(otherRecipientIds: []):
103+
return localizations.composeBoxSelfDmContentHint;
104+
case DmNarrow(otherRecipientIds: [final otherUserId]):
105+
final fullName = store.users[otherUserId]?.fullName;
106+
if (fullName == null) return localizations.composeBoxGenericContentHint;
107+
return localizations.composeBoxDmContentHint(fullName);
108+
case DmNarrow():
109+
return localizations.composeBoxGroupDmContentHint;
110+
case CombinedFeedNarrow():
111+
case MentionsNarrow():
112+
case StarredMessagesNarrow():
113+
throw StateError('unexpected narrow type');
114+
}
115+
}
116+
74117
/// Simulates loading a [MessageListPage] with a stream narrow
75118
/// and tapping to focus the topic input.
76119
///

0 commit comments

Comments
 (0)