Skip to content

Commit c026fce

Browse files
committed
test: Use TestZulipApp everywhere else it makes sense
1 parent 0a2b459 commit c026fce

17 files changed

+109
-184
lines changed

integration_test/unreadmarker_test.dart

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
1-
2-
import 'package:flutter/material.dart';
31
import 'package:flutter_test/flutter_test.dart';
42
import 'package:integration_test/integration_test.dart';
53
import 'package:zulip/api/model/events.dart';
64
import 'package:zulip/api/model/model.dart';
75
import 'package:zulip/model/narrow.dart';
86
import 'package:zulip/model/store.dart';
97
import 'package:zulip/widgets/message_list.dart';
10-
import 'package:zulip/widgets/page.dart';
11-
import 'package:zulip/widgets/store.dart';
128

139
import '../test/api/fake_api.dart';
1410
import '../test/example_data.dart' as eg;
1511
import '../test/model/binding.dart';
1612
import '../test/model/message_list_test.dart';
13+
import '../test/widgets/test_app.dart';
1714

1815
void main() {
1916
final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized();
@@ -34,13 +31,8 @@ void main() {
3431
connection.prepare(json:
3532
newestResult(foundOldest: true, messages: messages).toJson());
3633

37-
await tester.pumpWidget(
38-
MaterialApp(
39-
home: GlobalStoreWidget(
40-
child: PerAccountStoreWidget(
41-
accountId: eg.selfAccount.id,
42-
placeholder: const LoadingPlaceholderPage(),
43-
child: const MessageListPage(narrow: CombinedFeedNarrow())))));
34+
await tester.pumpWidget(TestZulipApp(accountId: eg.selfAccount.id,
35+
child: const MessageListPage(narrow: CombinedFeedNarrow())));
4436
await tester.pumpAndSettle();
4537
return messages;
4638
}

test/widgets/action_sheet_test.dart

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import 'dart:convert';
33
import 'package:checks/checks.dart';
44
import 'package:flutter/material.dart';
55
import 'package:flutter/services.dart';
6-
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
76
import 'package:flutter_test/flutter_test.dart';
87
import 'package:http/http.dart' as http;
98
import 'package:zulip/api/model/model.dart';
@@ -18,9 +17,7 @@ import 'package:zulip/widgets/compose_box.dart';
1817
import 'package:zulip/widgets/content.dart';
1918
import 'package:zulip/widgets/icons.dart';
2019
import 'package:zulip/widgets/message_list.dart';
21-
import 'package:zulip/widgets/store.dart';
2220
import 'package:share_plus_platform_interface/method_channel/method_channel_share.dart';
23-
import 'package:zulip/widgets/theme.dart';
2421
import '../api/fake_api.dart';
2522

2623
import '../example_data.dart' as eg;
@@ -32,6 +29,7 @@ import '../test_clipboard.dart';
3229
import '../test_share_plus.dart';
3330
import 'compose_box_checks.dart';
3431
import 'dialog_checks.dart';
32+
import 'test_app.dart';
3533

3634
/// Simulates loading a [MessageListPage] and long-pressing on [message].
3735
Future<void> setupToMessageActionSheet(WidgetTester tester, {
@@ -60,15 +58,8 @@ Future<void> setupToMessageActionSheet(WidgetTester tester, {
6058
messages: [message],
6159
).toJson());
6260

63-
await tester.pumpWidget(Builder(builder: (context) =>
64-
MaterialApp(
65-
theme: zulipThemeData(context),
66-
localizationsDelegates: ZulipLocalizations.localizationsDelegates,
67-
supportedLocales: ZulipLocalizations.supportedLocales,
68-
home: GlobalStoreWidget(
69-
child: PerAccountStoreWidget(
70-
accountId: eg.selfAccount.id,
71-
child: MessageListPage(narrow: narrow))))));
61+
await tester.pumpWidget(TestZulipApp(accountId: eg.selfAccount.id,
62+
child: MessageListPage(narrow: narrow)));
7263

7364
// global store, per-account store, and message list get loaded
7465
await tester.pumpAndSettle();

test/widgets/app_test.dart

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import 'package:checks/checks.dart';
22
import 'package:flutter/material.dart';
3-
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
43
import 'package:flutter_test/flutter_test.dart';
54
import 'package:zulip/model/database.dart';
65
import 'package:zulip/widgets/app.dart';
76
import 'package:zulip/widgets/inbox.dart';
87
import 'package:zulip/widgets/page.dart';
9-
import 'package:zulip/widgets/store.dart';
108

119
import '../example_data.dart' as eg;
1210
import '../flutter_checks.dart';
1311
import '../model/binding.dart';
1412
import '../test_navigation.dart';
1513
import 'page_checks.dart';
14+
import 'test_app.dart';
1615

1716
void main() {
1817
TestZulipBinding.ensureInitialized();
@@ -67,12 +66,7 @@ void main() {
6766
.insertAccount(account.toCompanion(false));
6867
}
6968

70-
await tester.pumpWidget(
71-
const MaterialApp(
72-
localizationsDelegates: ZulipLocalizations.localizationsDelegates,
73-
supportedLocales: ZulipLocalizations.supportedLocales,
74-
home: GlobalStoreWidget(
75-
child: ChooseAccountPage())));
69+
await tester.pumpWidget(const TestZulipApp(child: ChooseAccountPage()));
7670

7771
// global store gets loaded
7872
await tester.pumpAndSettle();

test/widgets/autocomplete_test.dart

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
import 'package:checks/checks.dart';
22
import 'package:flutter/material.dart';
3-
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
43
import 'package:flutter_test/flutter_test.dart';
54
import 'package:zulip/api/model/model.dart';
65
import 'package:zulip/api/route/messages.dart';
76
import 'package:zulip/model/compose.dart';
87
import 'package:zulip/model/narrow.dart';
98
import 'package:zulip/model/store.dart';
109
import 'package:zulip/widgets/message_list.dart';
11-
import 'package:zulip/widgets/store.dart';
12-
import 'package:zulip/widgets/theme.dart';
1310

1411
import '../api/fake_api.dart';
1512
import '../example_data.dart' as eg;
1613
import '../model/binding.dart';
1714
import '../model/test_store.dart';
1815
import '../test_images.dart';
16+
import 'test_app.dart';
1917

2018
/// Simulates loading a [MessageListPage] and tapping to focus the compose input.
2119
///
@@ -49,19 +47,12 @@ Future<Finder> setupToComposeInput(WidgetTester tester, {
4947

5048
prepareBoringImageHttpClient();
5149

52-
await tester.pumpWidget(Builder(builder: (context) =>
53-
MaterialApp(
54-
theme: zulipThemeData(context),
55-
localizationsDelegates: ZulipLocalizations.localizationsDelegates,
56-
supportedLocales: ZulipLocalizations.supportedLocales,
57-
home: GlobalStoreWidget(
58-
child: PerAccountStoreWidget(
59-
accountId: eg.selfAccount.id,
60-
child: MessageListPage(
61-
narrow: DmNarrow(
62-
allRecipientIds: [eg.selfUser.userId, eg.otherUser.userId],
63-
selfUserId: eg.selfUser.userId,
64-
)))))));
50+
await tester.pumpWidget(TestZulipApp(accountId: eg.selfAccount.id, child:
51+
MessageListPage(
52+
narrow: DmNarrow(
53+
allRecipientIds: [eg.selfUser.userId, eg.otherUser.userId],
54+
selfUserId: eg.selfUser.userId,
55+
))));
6556

6657
// global store, per-account store, and message list get loaded
6758
await tester.pumpAndSettle();

test/widgets/clipboard_test.dart

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:zulip/widgets/clipboard.dart';
88
import '../flutter_checks.dart';
99
import '../model/binding.dart';
1010
import '../test_clipboard.dart';
11+
import 'test_app.dart';
1112

1213
void main() {
1314
TestZulipBinding.ensureInitialized();
@@ -26,17 +27,15 @@ void main() {
2627

2728
group('copyWithPopup', () {
2829
Future<void> call(WidgetTester tester, {required String text}) async {
29-
await tester.pumpWidget(
30-
MaterialApp(
31-
home: Scaffold(
32-
body: Builder(builder: (context) => Center(
33-
child: ElevatedButton(
34-
onPressed: () async {
35-
copyWithPopup(context: context, successContent: const Text('Text copied'),
36-
data: ClipboardData(text: text));
37-
},
38-
child: const Text('Copy'))))),
39-
));
30+
await tester.pumpWidget(TestZulipApp(child: Scaffold(
31+
body: Builder(builder: (context) => Center(
32+
child: ElevatedButton(
33+
onPressed: () async {
34+
copyWithPopup(context: context, successContent: const Text('Text copied'),
35+
data: ClipboardData(text: text));
36+
},
37+
child: const Text('Copy')))))));
38+
await tester.pump();
4039
await tester.tap(find.text('Copy'));
4140
await tester.pump(); // copy
4241
await tester.pump(Duration.zero); // await platform info (awkwardly async)

test/widgets/compose_box_test.dart

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import 'package:checks/checks.dart';
22
import 'package:flutter/material.dart';
3-
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
43
import 'package:flutter_test/flutter_test.dart';
54
import 'package:zulip/model/narrow.dart';
65
import 'package:zulip/widgets/compose_box.dart';
7-
import 'package:zulip/widgets/store.dart';
86

97
import '../example_data.dart' as eg;
108
import '../flutter_checks.dart';
119
import '../model/binding.dart';
10+
import 'test_app.dart';
1211

1312
void main() {
1413
TestZulipBinding.ensureInitialized();
@@ -123,14 +122,8 @@ void main() {
123122
await testBinding.globalStore.add(eg.selfAccount, eg.initialSnapshot());
124123

125124
controllerKey = GlobalKey();
126-
await tester.pumpWidget(
127-
MaterialApp(
128-
localizationsDelegates: ZulipLocalizations.localizationsDelegates,
129-
supportedLocales: ZulipLocalizations.supportedLocales,
130-
home: GlobalStoreWidget(
131-
child: PerAccountStoreWidget(
132-
accountId: eg.selfAccount.id,
133-
child: ComposeBox(controllerKey: controllerKey, narrow: narrow)))));
125+
await tester.pumpWidget(TestZulipApp(accountId: eg.selfAccount.id,
126+
child: ComposeBox(controllerKey: controllerKey, narrow: narrow)));
134127
await tester.pumpAndSettle();
135128
}
136129

test/widgets/content_test.dart

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import 'package:checks/checks.dart';
22
import 'package:flutter/foundation.dart';
33
import 'package:flutter/material.dart';
44
import 'package:flutter/rendering.dart';
5-
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
65
import 'package:flutter_test/flutter_test.dart';
76
import 'package:url_launcher/url_launcher.dart';
87
import 'package:zulip/api/core.dart';
@@ -15,7 +14,6 @@ import 'package:zulip/widgets/message_list.dart';
1514
import 'package:zulip/widgets/page.dart';
1615
import 'package:zulip/widgets/store.dart';
1716
import 'package:zulip/widgets/text.dart';
18-
import 'package:zulip/widgets/theme.dart';
1917

2018
import '../example_data.dart' as eg;
2119
import '../flutter_checks.dart';
@@ -28,6 +26,7 @@ import '../test_navigation.dart';
2826
import 'dialog_checks.dart';
2927
import 'message_list_checks.dart';
3028
import 'page_checks.dart';
29+
import 'test_app.dart';
3130

3231
/// Simulate a nested "inner" span's style by merging all ancestor-span
3332
/// styles, starting from the root.
@@ -112,26 +111,18 @@ void main() {
112111
List<NavigatorObserver> navObservers = const [],
113112
bool wrapWithPerAccountStoreWidget = false,
114113
}) async {
115-
Widget widget = child;
116-
117114
if (wrapWithPerAccountStoreWidget) {
118115
await testBinding.globalStore.add(eg.selfAccount, eg.initialSnapshot());
119-
widget = PerAccountStoreWidget(accountId: eg.selfAccount.id, child: widget);
120116
}
121117

122-
widget = GlobalStoreWidget(child: widget);
123118
addTearDown(testBinding.reset);
124119

125120
prepareBoringImageHttpClient();
126121

127-
await tester.pumpWidget(
128-
Builder(builder: (context) =>
129-
MaterialApp(
130-
theme: zulipThemeData(context),
131-
localizationsDelegates: ZulipLocalizations.localizationsDelegates,
132-
supportedLocales: ZulipLocalizations.supportedLocales,
133-
navigatorObservers: navObservers,
134-
home: widget)));
122+
await tester.pumpWidget(TestZulipApp(
123+
accountId: wrapWithPerAccountStoreWidget ? eg.selfAccount.id : null,
124+
navigatorObservers: navObservers,
125+
child: child));
135126
await tester.pump(); // global store
136127
if (wrapWithPerAccountStoreWidget) {
137128
await tester.pump();

test/widgets/emoji_reaction_test.dart

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ import 'package:zulip/api/model/events.dart';
1111
import 'package:zulip/api/model/model.dart';
1212
import 'package:zulip/model/store.dart';
1313
import 'package:zulip/widgets/emoji_reaction.dart';
14-
import 'package:zulip/widgets/store.dart';
1514

1615
import '../example_data.dart' as eg;
1716
import '../flutter_checks.dart';
1817
import '../model/binding.dart';
1918
import '../model/test_store.dart';
2019
import '../test_images.dart';
20+
import 'test_app.dart';
2121
import 'text_test.dart';
2222

2323
void main() {
@@ -46,25 +46,26 @@ void main() {
4646
}) async {
4747
final message = eg.streamMessage(reactions: reactions);
4848

49-
await tester.pumpWidget(
50-
MaterialApp(
51-
home: Directionality(
52-
textDirection: textDirection,
53-
child: GlobalStoreWidget(
54-
child: PerAccountStoreWidget(
55-
accountId: eg.selfAccount.id,
56-
child: Center(
57-
child: ColoredBox(
58-
color: Colors.white,
59-
child: SizedBox(
60-
width: width,
61-
child: ReactionChipsList(
62-
messageId: message.id,
63-
reactions: message.reactions!,
64-
)))))))));
65-
66-
// global store, per-account store
67-
await tester.pumpAndSettle();
49+
final locale = switch (textDirection) {
50+
TextDirection.ltr => const Locale('en'),
51+
TextDirection.rtl => const Locale('ar'),
52+
};
53+
tester.platformDispatcher.localeTestValue = locale;
54+
tester.platformDispatcher.localesTestValue = [locale];
55+
addTearDown(tester.platformDispatcher.clearLocaleTestValue);
56+
addTearDown(tester.platformDispatcher.clearLocalesTestValue);
57+
58+
await tester.pumpWidget(TestZulipApp(accountId: eg.selfAccount.id,
59+
child: Center(
60+
child: ColoredBox(
61+
color: Colors.white,
62+
child: SizedBox(
63+
width: width,
64+
child: ReactionChipsList(
65+
messageId: message.id,
66+
reactions: message.reactions!,
67+
))))));
68+
await tester.pumpAndSettle(); // global store, per-account store
6869

6970
final reactionChipsList = tester.element(find.byType(ReactionChipsList));
7071
check(Directionality.of(reactionChipsList)).equals(textDirection);

0 commit comments

Comments
 (0)