1
1
import 'package:checks/checks.dart' ;
2
+ import 'package:flutter/cupertino.dart' ;
3
+ import 'package:flutter/foundation.dart' ;
2
4
import 'package:flutter/material.dart' ;
3
5
import 'package:flutter_checks/flutter_checks.dart' ;
4
6
import 'package:flutter_test/flutter_test.dart' ;
5
7
import 'package:zulip/widgets/dialog.dart' ;
6
8
7
- /// In a widget test, check that showErrorDialog was called with the right text.
9
+ /// In a widget test, check that [ showErrorDialog] was called with the right text.
8
10
///
9
11
/// Checks for an error dialog matching an expected title
10
12
/// and, optionally, matching an expected message. Fails if none is found.
@@ -15,26 +17,44 @@ Widget checkErrorDialog(WidgetTester tester, {
15
17
required String expectedTitle,
16
18
String ? expectedMessage,
17
19
}) {
18
- final dialog = tester.widget <AlertDialog >(find.byType (AlertDialog ));
19
- tester.widget (find.descendant (matchRoot: true ,
20
- of: find.byWidget (dialog.title! ), matching: find.text (expectedTitle)));
21
- if (expectedMessage != null ) {
22
- tester.widget (find.descendant (matchRoot: true ,
23
- of: find.byWidget (dialog.content! ), matching: find.text (expectedMessage)));
24
- }
25
-
26
20
// TODO check "Learn more" button?
21
+ switch (defaultTargetPlatform) {
22
+ case TargetPlatform .android:
23
+ case TargetPlatform .fuchsia:
24
+ case TargetPlatform .linux:
25
+ case TargetPlatform .windows:
26
+ final dialog = tester.widget <AlertDialog >(find.bySubtype <AlertDialog >());
27
+ tester.widget (find.descendant (matchRoot: true ,
28
+ of: find.byWidget (dialog.title! ), matching: find.text (expectedTitle)));
29
+ if (expectedMessage != null ) {
30
+ tester.widget (find.descendant (matchRoot: true ,
31
+ of: find.byWidget (dialog.content! ), matching: find.text (expectedMessage)));
32
+ }
33
+
34
+ return tester.widget (find.descendant (of: find.byWidget (dialog),
35
+ matching: find.widgetWithText (TextButton , 'OK' )));
27
36
28
- return tester.widget (
29
- find.descendant (of: find.byWidget (dialog),
30
- matching: find.widgetWithText (TextButton , 'OK' )));
37
+ case TargetPlatform .iOS:
38
+ case TargetPlatform .macOS:
39
+ final dialog = tester.widget <CupertinoAlertDialog >(find.byType (CupertinoAlertDialog ));
40
+ tester.widget (find.descendant (matchRoot: true ,
41
+ of: find.byWidget (dialog.title! ), matching: find.text (expectedTitle)));
42
+ if (expectedMessage != null ) {
43
+ tester.widget (find.descendant (matchRoot: true ,
44
+ of: find.byWidget (dialog.content! ), matching: find.text (expectedMessage)));
45
+ }
46
+
47
+ return tester.widget (find.descendant (of: find.byWidget (dialog),
48
+ matching: find.widgetWithText (CupertinoDialogAction , 'OK' )));
49
+ }
31
50
}
32
51
33
- // TODO(#996) update this to check for per-platform flavors of alert dialog
34
52
/// Checks that there is no dialog.
35
53
/// Fails if one is found.
36
54
void checkNoDialog (WidgetTester tester) {
37
- check (find.byType (AlertDialog )).findsNothing ();
55
+ check (find.byType (Dialog )).findsNothing ();
56
+ check (find.bySubtype <AlertDialog >()).findsNothing ();
57
+ check (find.byType (CupertinoAlertDialog )).findsNothing ();
38
58
}
39
59
40
60
/// In a widget test, check that [showSuggestedActionDialog] was called
@@ -51,19 +71,35 @@ void checkNoDialog(WidgetTester tester) {
51
71
required String expectedMessage,
52
72
String ? expectedActionButtonText,
53
73
}) {
54
- final dialog = tester.widget <AlertDialog >(find.byType (AlertDialog ));
55
- tester.widget (find.descendant (matchRoot: true ,
56
- of: find.byWidget (dialog.title! ), matching: find.text (expectedTitle)));
57
- tester.widget (find.descendant (matchRoot: true ,
58
- of: find.byWidget (dialog.content! ), matching: find.text (expectedMessage)));
74
+ switch (defaultTargetPlatform) {
75
+ case TargetPlatform .android:
76
+ case TargetPlatform .fuchsia:
77
+ case TargetPlatform .linux:
78
+ case TargetPlatform .windows:
79
+ final dialog = tester.widget <AlertDialog >(find.bySubtype <AlertDialog >());
80
+ tester.widget (find.descendant (matchRoot: true ,
81
+ of: find.byWidget (dialog.title! ), matching: find.text (expectedTitle)));
82
+ tester.widget (find.descendant (matchRoot: true ,
83
+ of: find.byWidget (dialog.content! ), matching: find.text (expectedMessage)));
59
84
60
- final actionButton = tester.widget (
61
- find.descendant (of: find.byWidget (dialog),
62
- matching: find.widgetWithText (TextButton , expectedActionButtonText ?? 'Continue' )));
85
+ final actionButton = tester.widget (find.descendant (of: find.byWidget (dialog),
86
+ matching: find.widgetWithText (TextButton , expectedActionButtonText ?? 'Continue' )));
87
+ final cancelButton = tester.widget (find.descendant (of: find.byWidget (dialog),
88
+ matching: find.widgetWithText (TextButton , 'Cancel' )));
89
+ return (actionButton, cancelButton);
63
90
64
- final cancelButton = tester.widget (
65
- find.descendant (of: find.byWidget (dialog),
66
- matching: find.widgetWithText (TextButton , 'Cancel' )));
91
+ case TargetPlatform .iOS:
92
+ case TargetPlatform .macOS:
93
+ final dialog = tester.widget <CupertinoAlertDialog >(find.byType (CupertinoAlertDialog ));
94
+ tester.widget (find.descendant (matchRoot: true ,
95
+ of: find.byWidget (dialog.title! ), matching: find.text (expectedTitle)));
96
+ tester.widget (find.descendant (matchRoot: true ,
97
+ of: find.byWidget (dialog.content! ), matching: find.text (expectedMessage)));
67
98
68
- return (actionButton, cancelButton);
99
+ final actionButton = tester.widget (find.descendant (of: find.byWidget (dialog),
100
+ matching: find.widgetWithText (CupertinoDialogAction , expectedActionButtonText ?? 'Continue' )));
101
+ final cancelButton = tester.widget (find.descendant (of: find.byWidget (dialog),
102
+ matching: find.widgetWithText (CupertinoDialogAction , 'Cancel' )));
103
+ return (actionButton, cancelButton);
104
+ }
69
105
}
0 commit comments