@@ -19,12 +19,14 @@ import '../model/test_store.dart';
19
19
import '../test_navigation.dart' ;
20
20
import 'content_checks.dart' ;
21
21
import 'message_list_checks.dart' ;
22
+ import 'message_list_test.dart' ;
22
23
import 'page_checks.dart' ;
23
24
import 'test_app.dart' ;
24
25
25
26
Future <void > setupPage (WidgetTester tester, {
26
27
required List <DmMessage > dmMessages,
27
28
required List <User > users,
29
+ List <int >? mutedUserIds,
28
30
NavigatorObserver ? navigatorObserver,
29
31
String ? newNameForSelfUser,
30
32
}) async {
@@ -37,6 +39,7 @@ Future<void> setupPage(WidgetTester tester, {
37
39
for (final user in users) {
38
40
await store.addUser (user);
39
41
}
42
+ await store.muteUsers (mutedUserIds ?? []);
40
43
41
44
await store.addMessages (dmMessages);
42
45
@@ -110,7 +113,7 @@ void main() {
110
113
111
114
group ('RecentDmConversationsItem' , () {
112
115
group ('content/appearance' , () {
113
- void checkAvatar (WidgetTester tester, DmNarrow narrow) {
116
+ void checkAvatar (WidgetTester tester, DmNarrow narrow, { bool isMuted = false } ) {
114
117
final shape = tester.widget <AvatarShape >(
115
118
find.descendant (
116
119
of: find.byType (RecentDmConversationsItem ),
@@ -124,7 +127,9 @@ void main() {
124
127
case []: // self-1:1
125
128
check (shape).child.isA <AvatarImage >().userId.equals (eg.selfUser.userId);
126
129
case [var otherUserId]: // 1:1
127
- check (shape).child.isA <AvatarImage >().userId.equals (otherUserId);
130
+ isMuted
131
+ ? check (shape).child.isA <AvatarPlaceholder >()
132
+ : check (shape).child.isA <AvatarImage >().userId.equals (otherUserId);
128
133
default : // group
129
134
// TODO(#232): syntax like `check(find(…), findsOneWidget)`
130
135
tester.widget (find.descendant (
@@ -204,13 +209,23 @@ void main() {
204
209
});
205
210
206
211
group ('1:1' , () {
207
- testWidgets ('has right title/avatar' , (tester) async {
208
- final user = eg.user (userId: 1 );
209
- final message = eg.dmMessage (from: eg.selfUser, to: [user]);
210
- await setupPage (tester, users: [user], dmMessages: [message]);
211
-
212
- checkAvatar (tester, DmNarrow .ofMessage (message, selfUserId: eg.selfUser.userId));
213
- checkTitle (tester, user.fullName);
212
+ group ('has right title/avatar' , () {
213
+ for (final isUserMuted in [false , true ]) {
214
+ testWidgets (isUserMuted ? 'muted user' : 'normal user' , (tester) async {
215
+ final user = eg.user (userId: 1 );
216
+ final message = eg.dmMessage (from: eg.selfUser, to: [user]);
217
+ await setupPage (tester,
218
+ users: [user],
219
+ mutedUserIds: isUserMuted ? [user.userId] : [],
220
+ dmMessages: [message],
221
+ );
222
+
223
+ checkAvatar (tester,
224
+ DmNarrow .ofMessage (message, selfUserId: eg.selfUser.userId),
225
+ isMuted: isUserMuted);
226
+ checkTitle (tester, isUserMuted ? localizations.mutedUser : user.fullName);
227
+ });
228
+ }
214
229
});
215
230
216
231
testWidgets ('no error when user somehow missing from user store' , (tester) async {
@@ -258,15 +273,26 @@ void main() {
258
273
return result;
259
274
}
260
275
261
- testWidgets ('has right title/avatar' , (tester) async {
262
- final users = usersList (2 );
263
- final user0 = users[0 ];
264
- final user1 = users[1 ];
265
- final message = eg.dmMessage (from: eg.selfUser, to: [user0, user1]);
266
- await setupPage (tester, users: users, dmMessages: [message]);
267
-
268
- checkAvatar (tester, DmNarrow .ofMessage (message, selfUserId: eg.selfUser.userId));
269
- checkTitle (tester, '${user0 .fullName }, ${user1 .fullName }' );
276
+ group ('has right title/avatar' , () {
277
+ for (final areUsersMuted in [false , true ]) {
278
+ testWidgets (areUsersMuted ? 'muted users' : 'normal users' , (tester) async {
279
+ final users = usersList (2 );
280
+ final user0 = users[0 ];
281
+ final user1 = users[1 ];
282
+ final message = eg.dmMessage (from: eg.selfUser, to: [user0, user1]);
283
+ await setupPage (
284
+ tester,
285
+ users: users,
286
+ mutedUserIds: areUsersMuted ? [user0.userId, user1.userId] : [],
287
+ dmMessages: [message],
288
+ );
289
+
290
+ checkAvatar (tester, DmNarrow .ofMessage (message, selfUserId: eg.selfUser.userId));
291
+ checkTitle (tester, areUsersMuted
292
+ ? '${localizations .mutedUser }, ${localizations .mutedUser }'
293
+ : '${user0 .fullName }, ${user1 .fullName }' );
294
+ });
295
+ }
270
296
});
271
297
272
298
testWidgets ('no error when one user somehow missing from user store' , (tester) async {
0 commit comments