@@ -52,6 +52,8 @@ late FakeApiConnection connection;
52
52
Future <void > setupToMessageActionSheet (WidgetTester tester, {
53
53
required Message message,
54
54
required Narrow narrow,
55
+ bool shouldSetServerEmojiData = true ,
56
+ bool useLegacyServerEmojiData = false ,
55
57
}) async {
56
58
addTearDown (testBinding.reset);
57
59
assert (narrow.containsMessage (message));
@@ -70,7 +72,11 @@ Future<void> setupToMessageActionSheet(WidgetTester tester, {
70
72
await store.addSubscription (eg.subscription (stream));
71
73
}
72
74
connection = store.connection as FakeApiConnection ;
73
- store.setServerEmojiData (eg.serverEmojiDataPopular);
75
+ if (shouldSetServerEmojiData) {
76
+ store.setServerEmojiData (useLegacyServerEmojiData
77
+ ? eg.serverEmojiDataPopular
78
+ : eg.serverEmojiDataPopularModern);
79
+ }
74
80
75
81
connection.prepare (json: eg.newestGetMessagesResult (
76
82
foundOldest: true , messages: [message]).toJson ());
@@ -811,74 +817,96 @@ void main() {
811
817
812
818
group ('message action sheet' , () {
813
819
group ('ReactionButtons' , () {
814
- final popularCandidates =
815
- (eg.store ()..setServerEmojiData (eg.serverEmojiDataPopular))
816
- .popularEmojiCandidates ();
817
-
818
- for (final emoji in popularCandidates) {
819
- final emojiDisplay = emoji.emojiDisplay as UnicodeEmojiDisplay ;
820
-
821
- Future <void > tapButton (WidgetTester tester) async {
822
- await tester.tap (find.descendant (
823
- of: find.byType (BottomSheet ),
824
- matching: find.text (emojiDisplay.emojiUnicode)));
825
- }
826
-
827
- testWidgets ('${emoji .emojiName } adding success' , (tester) async {
828
- final message = eg.streamMessage ();
829
- await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
830
-
831
- connection.prepare (json: {});
832
- await tapButton (tester);
833
- await tester.pump (Duration .zero);
834
-
835
- check (connection.lastRequest).isA< http.Request > ()
836
- ..method.equals ('POST' )
837
- ..url.path.equals ('/api/v1/messages/${message .id }/reactions' )
838
- ..bodyFields.deepEquals ({
839
- 'reaction_type' : 'unicode_emoji' ,
840
- 'emoji_code' : emoji.emojiCode,
841
- 'emoji_name' : emoji.emojiName,
842
- });
843
- });
844
-
845
- testWidgets ('${emoji .emojiName } removing success' , (tester) async {
846
- final message = eg.streamMessage (
847
- reactions: [Reaction (
848
- emojiName: emoji.emojiName,
849
- emojiCode: emoji.emojiCode,
850
- reactionType: ReactionType .unicodeEmoji,
851
- userId: eg.selfAccount.userId)]
852
- );
853
- await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
854
-
855
- connection.prepare (json: {});
856
- await tapButton (tester);
857
- await tester.pump (Duration .zero);
858
-
859
- check (connection.lastRequest).isA< http.Request > ()
860
- ..method.equals ('DELETE' )
861
- ..url.path.equals ('/api/v1/messages/${message .id }/reactions' )
862
- ..bodyFields.deepEquals ({
863
- 'reaction_type' : 'unicode_emoji' ,
864
- 'emoji_code' : emoji.emojiCode,
865
- 'emoji_name' : emoji.emojiName,
866
- });
867
- });
820
+ testWidgets ('absent if ServerEmojiData not loaded' , (tester) async {
821
+ final message = eg.streamMessage ();
822
+ await setupToMessageActionSheet (tester,
823
+ message: message,
824
+ narrow: TopicNarrow .ofMessage (message),
825
+ shouldSetServerEmojiData: false );
826
+ check (find.byType (ReactionButtons )).findsNothing ();
827
+ });
868
828
869
- testWidgets ('${emoji .emojiName } request has an error' , (tester) async {
870
- final message = eg.streamMessage ();
871
- await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
829
+ for (final useLegacy in [false , true ]) {
830
+ final popularCandidates =
831
+ (eg.store ()..setServerEmojiData (
832
+ useLegacy
833
+ ? eg.serverEmojiDataPopular
834
+ : eg.serverEmojiDataPopularModern))
835
+ .popularEmojiCandidates ();
836
+ for (final emoji in popularCandidates) {
837
+ final emojiDisplay = emoji.emojiDisplay as UnicodeEmojiDisplay ;
838
+
839
+ Future <void > tapButton (WidgetTester tester) async {
840
+ await tester.tap (find.descendant (
841
+ of: find.byType (BottomSheet ),
842
+ matching: find.text (emojiDisplay.emojiUnicode)));
843
+ }
844
+
845
+ testWidgets ('${emoji .emojiName } adding success; useLegacy: $useLegacy ' , (tester) async {
846
+ final message = eg.streamMessage ();
847
+ await setupToMessageActionSheet (tester,
848
+ message: message,
849
+ narrow: TopicNarrow .ofMessage (message),
850
+ useLegacyServerEmojiData: useLegacy);
851
+
852
+ connection.prepare (json: {});
853
+ await tapButton (tester);
854
+ await tester.pump (Duration .zero);
855
+
856
+ check (connection.lastRequest).isA< http.Request > ()
857
+ ..method.equals ('POST' )
858
+ ..url.path.equals ('/api/v1/messages/${message .id }/reactions' )
859
+ ..bodyFields.deepEquals ({
860
+ 'reaction_type' : 'unicode_emoji' ,
861
+ 'emoji_code' : emoji.emojiCode,
862
+ 'emoji_name' : emoji.emojiName,
863
+ });
864
+ });
872
865
873
- connection.prepare (
874
- apiException: eg.apiBadRequest (message: 'Invalid message(s)' ));
875
- await tapButton (tester);
876
- await tester.pump (Duration .zero); // error arrives; error dialog shows
866
+ testWidgets ('${emoji .emojiName } removing success; useLegacy: $useLegacy ' , (tester) async {
867
+ final message = eg.streamMessage (
868
+ reactions: [Reaction (
869
+ emojiName: emoji.emojiName,
870
+ emojiCode: emoji.emojiCode,
871
+ reactionType: ReactionType .unicodeEmoji,
872
+ userId: eg.selfAccount.userId)]
873
+ );
874
+ await setupToMessageActionSheet (tester,
875
+ message: message,
876
+ narrow: TopicNarrow .ofMessage (message),
877
+ useLegacyServerEmojiData: useLegacy);
878
+
879
+ connection.prepare (json: {});
880
+ await tapButton (tester);
881
+ await tester.pump (Duration .zero);
882
+
883
+ check (connection.lastRequest).isA< http.Request > ()
884
+ ..method.equals ('DELETE' )
885
+ ..url.path.equals ('/api/v1/messages/${message .id }/reactions' )
886
+ ..bodyFields.deepEquals ({
887
+ 'reaction_type' : 'unicode_emoji' ,
888
+ 'emoji_code' : emoji.emojiCode,
889
+ 'emoji_name' : emoji.emojiName,
890
+ });
891
+ });
877
892
878
- await tester.tap (find.byWidget (checkErrorDialog (tester,
879
- expectedTitle: 'Adding reaction failed' ,
880
- expectedMessage: 'Invalid message(s)' )));
881
- });
893
+ testWidgets ('${emoji .emojiName } request has an error; useLegacy: $useLegacy ' , (tester) async {
894
+ final message = eg.streamMessage ();
895
+ await setupToMessageActionSheet (tester,
896
+ message: message,
897
+ narrow: TopicNarrow .ofMessage (message),
898
+ useLegacyServerEmojiData: useLegacy);
899
+
900
+ connection.prepare (
901
+ apiException: eg.apiBadRequest (message: 'Invalid message(s)' ));
902
+ await tapButton (tester);
903
+ await tester.pump (Duration .zero); // error arrives; error dialog shows
904
+
905
+ await tester.tap (find.byWidget (checkErrorDialog (tester,
906
+ expectedTitle: 'Adding reaction failed' ,
907
+ expectedMessage: 'Invalid message(s)' )));
908
+ });
909
+ }
882
910
}
883
911
});
884
912
0 commit comments