@@ -26,9 +26,9 @@ import 'package:zulip/widgets/message_list.dart';
26
26
import 'package:zulip/widgets/page.dart' ;
27
27
import 'package:zulip/widgets/theme.dart' ;
28
28
29
+ import '../example_data.dart' as eg;
29
30
import '../fake_async.dart' ;
30
31
import '../model/binding.dart' ;
31
- import '../example_data.dart' as eg;
32
32
import '../model/narrow_checks.dart' ;
33
33
import '../stdlib_checks.dart' ;
34
34
import '../test_images.dart' ;
@@ -114,7 +114,10 @@ void main() {
114
114
return http.runWithClient (callback, httpClientFactory ?? () => fakeHttpClientGivingSuccess);
115
115
}
116
116
117
- Future <void > init () async {
117
+ Future <void > init ({bool addSelfAccount = true }) async {
118
+ if (addSelfAccount) {
119
+ await testBinding.globalStore.add (eg.selfAccount, eg.initialSnapshot ());
120
+ }
118
121
addTearDown (testBinding.reset);
119
122
testBinding.firebaseMessagingInitialToken = '012abc' ;
120
123
addTearDown (NotificationService .debugReset);
@@ -481,7 +484,8 @@ void main() {
481
484
await init ();
482
485
final stream = eg.stream ();
483
486
final message = eg.streamMessage (stream: stream);
484
- await checkNotifications (async , messageFcmMessage (message, streamName: stream.name),
487
+ await checkNotifications (async ,
488
+ messageFcmMessage (message, streamName: stream.name),
485
489
expectedIsGroupConversation: true ,
486
490
expectedTitle: '#${stream .name } > ${message .topic }' ,
487
491
expectedTagComponent: 'stream:${message .streamId }:${message .topic }' );
@@ -613,7 +617,8 @@ void main() {
613
617
await init ();
614
618
final stream = eg.stream ();
615
619
final message = eg.streamMessage (stream: stream);
616
- await checkNotifications (async , messageFcmMessage (message, streamName: null ),
620
+ await checkNotifications (async ,
621
+ messageFcmMessage (message, streamName: null ),
617
622
expectedIsGroupConversation: true ,
618
623
expectedTitle: '#(unknown channel) > ${message .topic }' ,
619
624
expectedTagComponent: 'stream:${message .streamId }:${message .topic }' );
@@ -730,6 +735,7 @@ void main() {
730
735
await init ();
731
736
final message = eg.dmMessage (from: eg.otherUser, to: [eg.selfUser]);
732
737
final data = messageFcmMessage (message);
738
+
733
739
receiveFcmMessage (async , data);
734
740
checkNotification (data,
735
741
messageStyleMessages: [data],
@@ -746,6 +752,7 @@ void main() {
746
752
await init ();
747
753
final message = eg.dmMessage (from: eg.otherUser, to: [eg.selfUser]);
748
754
final data = messageFcmMessage (message);
755
+
749
756
receiveFcmMessage (async , data);
750
757
checkNotification (data,
751
758
messageStyleMessages: [data],
@@ -872,7 +879,8 @@ void main() {
872
879
})));
873
880
874
881
test ('remove: different realm URLs but same user-ids and same message-ids' , () => runWithHttpClient (() => awaitFakeAsync ((async ) async {
875
- await init ();
882
+ await init (addSelfAccount: false );
883
+
876
884
final stream = eg.stream ();
877
885
const topic = 'Some Topic' ;
878
886
final conversationKey = 'stream:${stream .streamId }:some topic' ;
@@ -881,6 +889,7 @@ void main() {
881
889
realmUrl: Uri .parse ('https://1.chat.example' ),
882
890
id: 1001 ,
883
891
user: eg.user (userId: 1001 ));
892
+ await testBinding.globalStore.add (account1, eg.initialSnapshot ());
884
893
final message1 = eg.streamMessage (id: 1000 , stream: stream, topic: topic);
885
894
final data1 =
886
895
messageFcmMessage (message1, account: account1, streamName: stream.name);
@@ -890,6 +899,7 @@ void main() {
890
899
realmUrl: Uri .parse ('https://2.chat.example' ),
891
900
id: 1002 ,
892
901
user: eg.user (userId: 1001 ));
902
+ await testBinding.globalStore.add (account2, eg.initialSnapshot ());
893
903
final message2 = eg.streamMessage (id: 1000 , stream: stream, topic: topic);
894
904
final data2 =
895
905
messageFcmMessage (message2, account: account2, streamName: stream.name);
@@ -917,19 +927,21 @@ void main() {
917
927
})));
918
928
919
929
test ('remove: different user-ids but same realm URL and same message-ids' , () => runWithHttpClient (() => awaitFakeAsync ((async ) async {
920
- await init ();
930
+ await init (addSelfAccount : false );
921
931
final realmUrl = eg.realmUrl;
922
932
final stream = eg.stream ();
923
933
const topic = 'Some Topic' ;
924
934
final conversationKey = 'stream:${stream .streamId }:some topic' ;
925
935
926
936
final account1 = eg.account (id: 1001 , user: eg.user (userId: 1001 ), realmUrl: realmUrl);
937
+ await testBinding.globalStore.add (account1, eg.initialSnapshot ());
927
938
final message1 = eg.streamMessage (id: 1000 , stream: stream, topic: topic);
928
939
final data1 =
929
940
messageFcmMessage (message1, account: account1, streamName: stream.name);
930
941
final groupKey1 = '${account1 .realmUrl }|${account1 .userId }' ;
931
942
932
943
final account2 = eg.account (id: 1002 , user: eg.user (userId: 1002 ), realmUrl: realmUrl);
944
+ await testBinding.globalStore.add (account2, eg.initialSnapshot ());
933
945
final message2 = eg.streamMessage (id: 1000 , stream: stream, topic: topic);
934
946
final data2 =
935
947
messageFcmMessage (message2, account: account2, streamName: stream.name);
@@ -955,6 +967,21 @@ void main() {
955
967
receiveFcmMessage (async , removeFcmMessage ([message2], account: account2));
956
968
check (testBinding.androidNotificationHost.activeNotifications).isEmpty ();
957
969
})));
970
+
971
+ test ('removeNotificationsForAccount removes notifications' , () => runWithHttpClient (() => awaitFakeAsync ((async ) async {
972
+ await init ();
973
+ final message = eg.dmMessage (from: eg.otherUser, to: [eg.selfUser]);
974
+
975
+ await checkNotifications (async , messageFcmMessage (message),
976
+ expectedIsGroupConversation: false ,
977
+ expectedTitle: eg.otherUser.fullName,
978
+ expectedTagComponent: 'dm:${message .allRecipientIds .join ("," )}' );
979
+
980
+ check (testBinding.androidNotificationHost.activeNotifications).isNotEmpty ();
981
+ await NotificationDisplayManager .removeNotificationsForAccount (
982
+ eg.selfAccount.realmUrl, eg.selfAccount.userId);
983
+ check (testBinding.androidNotificationHost.activeNotifications).isEmpty ();
984
+ })));
958
985
});
959
986
960
987
group ('NotificationDisplayManager open' , () {
0 commit comments