@@ -55,6 +55,8 @@ Future<void> setupToMessageActionSheet(WidgetTester tester, {
55
55
required Narrow narrow,
56
56
bool ? realmAllowMessageEditing,
57
57
int ? realmMessageContentEditLimitSeconds,
58
+ bool shouldSetServerEmojiData = true ,
59
+ bool useLegacyServerEmojiData = false ,
58
60
}) async {
59
61
addTearDown (testBinding.reset);
60
62
assert (narrow.containsMessage (message));
@@ -78,7 +80,11 @@ Future<void> setupToMessageActionSheet(WidgetTester tester, {
78
80
await store.addSubscription (eg.subscription (stream));
79
81
}
80
82
connection = store.connection as FakeApiConnection ;
81
- store.setServerEmojiData (eg.serverEmojiDataPopular);
83
+ if (shouldSetServerEmojiData) {
84
+ store.setServerEmojiData (useLegacyServerEmojiData
85
+ ? eg.serverEmojiDataPopular
86
+ : eg.serverEmojiDataPopularModern);
87
+ }
82
88
83
89
connection.prepare (json: eg.newestGetMessagesResult (
84
90
foundOldest: true , messages: [message]).toJson ());
@@ -830,74 +836,96 @@ void main() {
830
836
831
837
group ('message action sheet' , () {
832
838
group ('ReactionButtons' , () {
833
- final popularCandidates =
834
- (eg.store ()..setServerEmojiData (eg.serverEmojiDataPopular))
835
- .popularEmojiCandidates ();
836
-
837
- for (final emoji in popularCandidates) {
838
- final emojiDisplay = emoji.emojiDisplay as UnicodeEmojiDisplay ;
839
+ testWidgets ('absent if ServerEmojiData not loaded' , (tester) async {
840
+ final message = eg.streamMessage ();
841
+ await setupToMessageActionSheet (tester,
842
+ message: message,
843
+ narrow: TopicNarrow .ofMessage (message),
844
+ shouldSetServerEmojiData: false );
845
+ check (find.byType (ReactionButtons )).findsNothing ();
846
+ });
839
847
840
- Future <void > tapButton (WidgetTester tester) async {
841
- await tester.tap (find.descendant (
842
- of: find.byType (BottomSheet ),
843
- matching: find.text (emojiDisplay.emojiUnicode)));
844
- }
848
+ for (final useLegacy in [false , true ]) {
849
+ final popularCandidates =
850
+ (eg.store ()..setServerEmojiData (
851
+ useLegacy
852
+ ? eg.serverEmojiDataPopular
853
+ : eg.serverEmojiDataPopularModern))
854
+ .popularEmojiCandidates ();
855
+ for (final emoji in popularCandidates) {
856
+ final emojiDisplay = emoji.emojiDisplay as UnicodeEmojiDisplay ;
857
+
858
+ Future <void > tapButton (WidgetTester tester) async {
859
+ await tester.tap (find.descendant (
860
+ of: find.byType (BottomSheet ),
861
+ matching: find.text (emojiDisplay.emojiUnicode)));
862
+ }
845
863
846
- testWidgets ('${emoji .emojiName } adding success' , (tester) async {
847
- final message = eg.streamMessage ();
848
- await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
864
+ testWidgets ('${emoji .emojiName } adding success; useLegacy: $useLegacy ' , (tester) async {
865
+ final message = eg.streamMessage ();
866
+ await setupToMessageActionSheet (tester,
867
+ message: message,
868
+ narrow: TopicNarrow .ofMessage (message),
869
+ useLegacyServerEmojiData: useLegacy);
849
870
850
- connection.prepare (json: {});
851
- await tapButton (tester);
852
- await tester.pump (Duration .zero);
871
+ connection.prepare (json: {});
872
+ await tapButton (tester);
873
+ await tester.pump (Duration .zero);
853
874
854
- check (connection.lastRequest).isA< http.Request > ()
855
- ..method.equals ('POST' )
856
- ..url.path.equals ('/api/v1/messages/${message .id }/reactions' )
857
- ..bodyFields.deepEquals ({
858
- 'reaction_type' : 'unicode_emoji' ,
859
- 'emoji_code' : emoji.emojiCode,
860
- 'emoji_name' : emoji.emojiName,
861
- });
862
- });
875
+ check (connection.lastRequest).isA< http.Request > ()
876
+ ..method.equals ('POST' )
877
+ ..url.path.equals ('/api/v1/messages/${message .id }/reactions' )
878
+ ..bodyFields.deepEquals ({
879
+ 'reaction_type' : 'unicode_emoji' ,
880
+ 'emoji_code' : emoji.emojiCode,
881
+ 'emoji_name' : emoji.emojiName,
882
+ });
883
+ });
863
884
864
- testWidgets ('${emoji .emojiName } removing success' , (tester) async {
865
- final message = eg.streamMessage (
866
- reactions: [Reaction (
867
- emojiName: emoji.emojiName,
868
- emojiCode: emoji.emojiCode,
869
- reactionType: ReactionType .unicodeEmoji,
870
- userId: eg.selfAccount.userId)]
871
- );
872
- await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
885
+ testWidgets ('${emoji .emojiName } removing success; useLegacy: $useLegacy ' , (tester) async {
886
+ final message = eg.streamMessage (
887
+ reactions: [Reaction (
888
+ emojiName: emoji.emojiName,
889
+ emojiCode: emoji.emojiCode,
890
+ reactionType: ReactionType .unicodeEmoji,
891
+ userId: eg.selfAccount.userId)]
892
+ );
893
+ await setupToMessageActionSheet (tester,
894
+ message: message,
895
+ narrow: TopicNarrow .ofMessage (message),
896
+ useLegacyServerEmojiData: useLegacy);
873
897
874
- connection.prepare (json: {});
875
- await tapButton (tester);
876
- await tester.pump (Duration .zero);
898
+ connection.prepare (json: {});
899
+ await tapButton (tester);
900
+ await tester.pump (Duration .zero);
877
901
878
- check (connection.lastRequest).isA< http.Request > ()
879
- ..method.equals ('DELETE' )
880
- ..url.path.equals ('/api/v1/messages/${message .id }/reactions' )
881
- ..bodyFields.deepEquals ({
882
- 'reaction_type' : 'unicode_emoji' ,
883
- 'emoji_code' : emoji.emojiCode,
884
- 'emoji_name' : emoji.emojiName,
885
- });
886
- });
902
+ check (connection.lastRequest).isA< http.Request > ()
903
+ ..method.equals ('DELETE' )
904
+ ..url.path.equals ('/api/v1/messages/${message .id }/reactions' )
905
+ ..bodyFields.deepEquals ({
906
+ 'reaction_type' : 'unicode_emoji' ,
907
+ 'emoji_code' : emoji.emojiCode,
908
+ 'emoji_name' : emoji.emojiName,
909
+ });
910
+ });
887
911
888
- testWidgets ('${emoji .emojiName } request has an error' , (tester) async {
889
- final message = eg.streamMessage ();
890
- await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
912
+ testWidgets ('${emoji .emojiName } request has an error; useLegacy: $useLegacy ' , (tester) async {
913
+ final message = eg.streamMessage ();
914
+ await setupToMessageActionSheet (tester,
915
+ message: message,
916
+ narrow: TopicNarrow .ofMessage (message),
917
+ useLegacyServerEmojiData: useLegacy);
891
918
892
- connection.prepare (
893
- apiException: eg.apiBadRequest (message: 'Invalid message(s)' ));
894
- await tapButton (tester);
895
- await tester.pump (Duration .zero); // error arrives; error dialog shows
919
+ connection.prepare (
920
+ apiException: eg.apiBadRequest (message: 'Invalid message(s)' ));
921
+ await tapButton (tester);
922
+ await tester.pump (Duration .zero); // error arrives; error dialog shows
896
923
897
- await tester.tap (find.byWidget (checkErrorDialog (tester,
898
- expectedTitle: 'Adding reaction failed' ,
899
- expectedMessage: 'Invalid message(s)' )));
900
- });
924
+ await tester.tap (find.byWidget (checkErrorDialog (tester,
925
+ expectedTitle: 'Adding reaction failed' ,
926
+ expectedMessage: 'Invalid message(s)' )));
927
+ });
928
+ }
901
929
}
902
930
});
903
931
0 commit comments