Skip to content

Commit 3c91597

Browse files
committed
compose test: Test ComposeBox directly, without MessageListPage
This lets us simplify the setup significantly.
1 parent cf31b9e commit 3c91597

File tree

1 file changed

+7
-26
lines changed

1 file changed

+7
-26
lines changed

test/widgets/compose_box_test.dart

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@ import 'package:checks/checks.dart';
22
import 'package:flutter/material.dart';
33
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
44
import 'package:flutter_test/flutter_test.dart';
5-
import 'package:zulip/api/route/messages.dart';
65
import 'package:zulip/model/narrow.dart';
76
import 'package:zulip/widgets/compose_box.dart';
8-
import 'package:zulip/widgets/message_list.dart';
97
import 'package:zulip/widgets/store.dart';
108

11-
import '../api/fake_api.dart';
129
import '../example_data.dart' as eg;
1310
import '../flutter_checks.dart';
1411
import '../model/binding.dart';
@@ -119,42 +116,26 @@ void main() {
119116
});
120117

121118
group('ComposeBox textCapitalization', () {
122-
final message = eg.streamMessage();
119+
late GlobalKey<ComposeBoxController> controllerKey;
123120

124121
Future<void> prepareComposeBox(WidgetTester tester, Narrow narrow) async {
125122
addTearDown(testBinding.reset);
126-
await testBinding.globalStore.add(eg.selfAccount, eg.initialSnapshot(
127-
streams: [eg.stream(streamId: message.streamId)],
128-
));
129-
final store = await testBinding.globalStore.perAccount(eg.selfAccount.id);
130-
final connection = store.connection as FakeApiConnection;
131-
132-
// prepare message list data
133-
connection.prepare(json: GetMessagesResult(
134-
anchor: message.id,
135-
foundNewest: true,
136-
foundOldest: true,
137-
foundAnchor: true,
138-
historyLimited: false,
139-
messages: [message],
140-
).toJson());
123+
await testBinding.globalStore.add(eg.selfAccount, eg.initialSnapshot());
141124

125+
controllerKey = GlobalKey();
142126
await tester.pumpWidget(
143127
MaterialApp(
144128
localizationsDelegates: ZulipLocalizations.localizationsDelegates,
145129
supportedLocales: ZulipLocalizations.supportedLocales,
146130
home: GlobalStoreWidget(
147131
child: PerAccountStoreWidget(
148132
accountId: eg.selfAccount.id,
149-
child: MessageListPage(narrow: narrow)))));
150-
151-
// global store, per-account store, and message list get loaded
133+
child: ComposeBox(controllerKey: controllerKey, narrow: narrow)))));
152134
await tester.pumpAndSettle();
153135
}
154136

155137
void checkComposeBoxTextFields(WidgetTester tester, {required bool expectTopicTextField}) {
156-
final composeBoxController = tester.widget<ComposeBox>(find.byType(ComposeBox))
157-
.controllerKey!.currentState!;
138+
final composeBoxController = controllerKey.currentState!;
158139

159140
final topicTextField = tester.widgetList<TextField>(find.byWidgetPredicate(
160141
(widget) => widget is TextField
@@ -174,12 +155,12 @@ void main() {
174155
}
175156

176157
testWidgets('_StreamComposeBox', (tester) async {
177-
await prepareComposeBox(tester, StreamNarrow(message.streamId));
158+
await prepareComposeBox(tester, StreamNarrow(eg.stream().streamId));
178159
checkComposeBoxTextFields(tester, expectTopicTextField: true);
179160
});
180161

181162
testWidgets('_FixedDestinationComposeBox', (tester) async {
182-
await prepareComposeBox(tester, TopicNarrow.ofMessage(message));
163+
await prepareComposeBox(tester, TopicNarrow.ofMessage(eg.streamMessage()));
183164
checkComposeBoxTextFields(tester, expectTopicTextField: false);
184165
});
185166
});

0 commit comments

Comments
 (0)