Skip to content

Commit d46523e

Browse files
committed
msglist test [nfc]: Use shared store/connection variables in widget tests
In particular this will allow individual test cases to call `connection.prepare` for setting up further API responses.
1 parent 7a7d80c commit d46523e

File tree

1 file changed

+33
-29
lines changed

1 file changed

+33
-29
lines changed

test/widgets/message_list_test.dart

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:flutter_test/flutter_test.dart';
66
import 'package:zulip/api/model/events.dart';
77
import 'package:zulip/api/model/model.dart';
88
import 'package:zulip/model/narrow.dart';
9+
import 'package:zulip/model/store.dart';
910
import 'package:zulip/widgets/content.dart';
1011
import 'package:zulip/widgets/message_list.dart';
1112
import 'package:zulip/widgets/sticky_header.dart';
@@ -19,39 +20,42 @@ import '../model/test_store.dart';
1920
import '../test_images.dart';
2021
import 'content_checks.dart';
2122

22-
Future<void> setupMessageListPage(WidgetTester tester, {
23-
Narrow narrow = const AllMessagesNarrow(),
24-
}) async {
25-
addTearDown(TestZulipBinding.instance.reset);
26-
addTearDown(tester.view.resetPhysicalSize);
23+
void main() {
24+
TestZulipBinding.ensureInitialized();
2725

28-
tester.view.physicalSize = const Size(600, 800);
26+
late PerAccountStore store;
27+
late FakeApiConnection connection;
2928

30-
await TestZulipBinding.instance.globalStore.add(eg.selfAccount, eg.initialSnapshot());
31-
final store = await TestZulipBinding.instance.globalStore.perAccount(eg.selfAccount.id);
32-
final connection = store.connection as FakeApiConnection;
29+
Future<void> setupMessageListPage(WidgetTester tester, {
30+
Narrow narrow = const AllMessagesNarrow(),
31+
}) async {
32+
addTearDown(TestZulipBinding.instance.reset);
33+
addTearDown(tester.view.resetPhysicalSize);
3334

34-
// prepare message list data
35-
store.addUser(eg.selfUser);
36-
final List<StreamMessage> messages = List.generate(10, (index) {
37-
return eg.streamMessage(id: index, sender: eg.selfUser);
38-
});
39-
connection.prepare(json:
40-
newestResult(foundOldest: true, messages: messages).toJson());
41-
42-
await tester.pumpWidget(
43-
MaterialApp(
44-
home: GlobalStoreWidget(
45-
child: PerAccountStoreWidget(
46-
accountId: eg.selfAccount.id,
47-
child: MessageListPage(narrow: narrow)))));
48-
49-
// global store, per-account store, and message list get loaded
50-
await tester.pumpAndSettle();
51-
}
35+
tester.view.physicalSize = const Size(600, 800);
5236

53-
void main() {
54-
TestZulipBinding.ensureInitialized();
37+
await TestZulipBinding.instance.globalStore.add(eg.selfAccount, eg.initialSnapshot());
38+
store = await TestZulipBinding.instance.globalStore.perAccount(eg.selfAccount.id);
39+
connection = store.connection as FakeApiConnection;
40+
41+
// prepare message list data
42+
store.addUser(eg.selfUser);
43+
final List<StreamMessage> messages = List.generate(10, (index) {
44+
return eg.streamMessage(id: index, sender: eg.selfUser);
45+
});
46+
connection.prepare(json:
47+
newestResult(foundOldest: true, messages: messages).toJson());
48+
49+
await tester.pumpWidget(
50+
MaterialApp(
51+
home: GlobalStoreWidget(
52+
child: PerAccountStoreWidget(
53+
accountId: eg.selfAccount.id,
54+
child: MessageListPage(narrow: narrow)))));
55+
56+
// global store, per-account store, and message list get loaded
57+
await tester.pumpAndSettle();
58+
}
5559

5660
group('ScrollToBottomButton interactions', () {
5761
ScrollController? findMessageListScrollController(WidgetTester tester) {

0 commit comments

Comments
 (0)