@@ -247,70 +247,6 @@ void main() {
247247 });
248248 });
249249
250- group ('ShareButton' , () {
251- // Tests should call this.
252- MockSharePlus setupMockSharePlus () {
253- final mock = MockSharePlus ();
254- TestDefaultBinaryMessengerBinding .instance.defaultBinaryMessenger.setMockMethodCallHandler (
255- MethodChannelShare .channel,
256- mock.handleMethodCall,
257- );
258- return mock;
259- }
260-
261- Future <void > tapShareButton (WidgetTester tester) async {
262- await tester.ensureVisible (find.byIcon (Icons .adaptive.share, skipOffstage: false ));
263- await tester.tap (find.byIcon (Icons .adaptive.share));
264- await tester.pump (); // [MenuItemButton.onPressed] called in a post-frame callback: flutter/flutter@e4a39fa2e
265- }
266-
267- testWidgets ('request succeeds; sharing succeeds' , (WidgetTester tester) async {
268- final mockSharePlus = setupMockSharePlus ();
269- final message = eg.streamMessage ();
270- await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
271- final store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
272-
273- prepareRawContentResponseSuccess (store, message: message, rawContent: 'Hello world' );
274- await tapShareButton (tester);
275- await tester.pump (Duration .zero);
276- check (mockSharePlus.sharedString).equals ('Hello world' );
277- });
278-
279- testWidgets ('request succeeds; sharing fails' , (WidgetTester tester) async {
280- final mockSharePlus = setupMockSharePlus ();
281- final message = eg.streamMessage ();
282- await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
283- final store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
284-
285- prepareRawContentResponseSuccess (store, message: message, rawContent: 'Hello world' );
286- mockSharePlus.resultString = 'dev.fluttercommunity.plus/share/unavailable' ;
287- await tapShareButton (tester);
288- await tester.pump (Duration .zero);
289- check (mockSharePlus.sharedString).equals ('Hello world' );
290- await tester.pump ();
291- await tester.tap (find.byWidget (checkErrorDialog (tester,
292- expectedTitle: 'Sharing failed' )));
293- });
294-
295- testWidgets ('request has an error' , (WidgetTester tester) async {
296- final mockSharePlus = setupMockSharePlus ();
297- final message = eg.streamMessage ();
298- await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
299- final store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
300-
301- prepareRawContentResponseError (store);
302- await tapShareButton (tester);
303- await tester.pump (Duration .zero); // error arrives; error dialog shows
304-
305- await tester.tap (find.byWidget (checkErrorDialog (tester,
306- expectedTitle: 'Sharing failed' ,
307- expectedMessage: 'That message does not seem to exist.' ,
308- )));
309-
310- check (mockSharePlus.sharedString).isNull ();
311- });
312- });
313-
314250 group ('QuoteAndReplyButton' , () {
315251 ComposeBoxController ? findComposeBoxController (WidgetTester tester) {
316252 return tester.widget <ComposeBox >(find.byType (ComposeBox ))
@@ -517,4 +453,68 @@ void main() {
517453 check (await Clipboard .getData ('text/plain' )).isNull ();
518454 });
519455 });
456+
457+ group ('ShareButton' , () {
458+ // Tests should call this.
459+ MockSharePlus setupMockSharePlus () {
460+ final mock = MockSharePlus ();
461+ TestDefaultBinaryMessengerBinding .instance.defaultBinaryMessenger.setMockMethodCallHandler (
462+ MethodChannelShare .channel,
463+ mock.handleMethodCall,
464+ );
465+ return mock;
466+ }
467+
468+ Future <void > tapShareButton (WidgetTester tester) async {
469+ await tester.ensureVisible (find.byIcon (Icons .adaptive.share, skipOffstage: false ));
470+ await tester.tap (find.byIcon (Icons .adaptive.share));
471+ await tester.pump (); // [MenuItemButton.onPressed] called in a post-frame callback: flutter/flutter@e4a39fa2e
472+ }
473+
474+ testWidgets ('request succeeds; sharing succeeds' , (WidgetTester tester) async {
475+ final mockSharePlus = setupMockSharePlus ();
476+ final message = eg.streamMessage ();
477+ await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
478+ final store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
479+
480+ prepareRawContentResponseSuccess (store, message: message, rawContent: 'Hello world' );
481+ await tapShareButton (tester);
482+ await tester.pump (Duration .zero);
483+ check (mockSharePlus.sharedString).equals ('Hello world' );
484+ });
485+
486+ testWidgets ('request succeeds; sharing fails' , (WidgetTester tester) async {
487+ final mockSharePlus = setupMockSharePlus ();
488+ final message = eg.streamMessage ();
489+ await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
490+ final store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
491+
492+ prepareRawContentResponseSuccess (store, message: message, rawContent: 'Hello world' );
493+ mockSharePlus.resultString = 'dev.fluttercommunity.plus/share/unavailable' ;
494+ await tapShareButton (tester);
495+ await tester.pump (Duration .zero);
496+ check (mockSharePlus.sharedString).equals ('Hello world' );
497+ await tester.pump ();
498+ await tester.tap (find.byWidget (checkErrorDialog (tester,
499+ expectedTitle: 'Sharing failed' )));
500+ });
501+
502+ testWidgets ('request has an error' , (WidgetTester tester) async {
503+ final mockSharePlus = setupMockSharePlus ();
504+ final message = eg.streamMessage ();
505+ await setupToMessageActionSheet (tester, message: message, narrow: TopicNarrow .ofMessage (message));
506+ final store = await testBinding.globalStore.perAccount (eg.selfAccount.id);
507+
508+ prepareRawContentResponseError (store);
509+ await tapShareButton (tester);
510+ await tester.pump (Duration .zero); // error arrives; error dialog shows
511+
512+ await tester.tap (find.byWidget (checkErrorDialog (tester,
513+ expectedTitle: 'Sharing failed' ,
514+ expectedMessage: 'That message does not seem to exist.' ,
515+ )));
516+
517+ check (mockSharePlus.sharedString).isNull ();
518+ });
519+ });
520520}
0 commit comments