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