1
1
import 'dart:convert' ;
2
- import 'dart:io' ;
3
2
4
3
import 'package:checks/checks.dart' ;
5
4
import 'package:flutter/material.dart' ;
@@ -28,8 +27,8 @@ import '../model/test_store.dart';
28
27
import '../flutter_checks.dart' ;
29
28
import '../model/unreads_checks.dart' ;
30
29
import '../stdlib_checks.dart' ;
31
- import '../test_images.dart' ;
32
30
import 'content_checks.dart' ;
31
+ import 'content_test.dart' ;
33
32
import 'dialog_checks.dart' ;
34
33
35
34
void main () {
@@ -44,6 +43,7 @@ void main() {
44
43
int ? messageCount,
45
44
List <Message >? messages,
46
45
List <ZulipStream >? streams,
46
+ List <User >? users,
47
47
List <Subscription >? subscriptions,
48
48
UnreadMessagesSnapshot ? unreadMsgs,
49
49
}) async {
@@ -56,6 +56,7 @@ void main() {
56
56
57
57
// prepare message list data
58
58
store.addUser (eg.selfUser);
59
+ store.addUsers (users ?? []);
59
60
assert ((messageCount == null ) != (messages == null ));
60
61
messages ?? = List .generate (messageCount! , (index) {
61
62
return eg.streamMessage (sender: eg.selfUser);
@@ -480,6 +481,49 @@ void main() {
480
481
481
482
debugNetworkImageHttpClientProvider = null ;
482
483
});
484
+
485
+ testWidgets ('Bot user is distinguished by showing an icon' , (tester) async {
486
+ // When using this function, provide only one bot user
487
+ // to [PerAccountStore] through [setupMessageListPage] function.
488
+ void checkUser ({required User user, required bool isBot}) {
489
+ final nameFinder = find.text (user.fullName);
490
+ final botFinder = find.byIcon (ZulipIcons .bot);
491
+
492
+ check (nameFinder.evaluate ().singleOrNull).isNotNull ();
493
+ check (botFinder.evaluate ().singleOrNull).isNotNull ();
494
+
495
+ final userFinder = find.ancestor (
496
+ of: nameFinder,
497
+ matching: find.ancestor (
498
+ of: botFinder,
499
+ matching: find.byType (Row ),
500
+ ));
501
+
502
+ isBot
503
+ ? check (userFinder.evaluate ()).isNotEmpty ()
504
+ : check (userFinder.evaluate ()).isEmpty ();
505
+ }
506
+
507
+ prepareBoringImageHttpClient ();
508
+
509
+ final users = [
510
+ eg.user (fullName: 'User 1' , isBot: true ),
511
+ eg.user (fullName: 'User 2' , isBot: false ),
512
+ eg.user (fullName: 'User 3' , isBot: false ),
513
+ ];
514
+
515
+ await setupMessageListPage (
516
+ tester,
517
+ messages: users.map ((user) => eg.streamMessage (sender: user)).toList (),
518
+ users: users,
519
+ );
520
+
521
+ checkUser (user: users[0 ], isBot: true );
522
+ checkUser (user: users[1 ], isBot: false );
523
+ checkUser (user: users[2 ], isBot: false );
524
+
525
+ debugNetworkImageHttpClientProvider = null ;
526
+ });
483
527
});
484
528
485
529
group ('Starred messages' , () {
0 commit comments