Skip to content

Commit 78f03aa

Browse files
committed
Add test
1 parent 2365fa5 commit 78f03aa

File tree

3 files changed

+97
-2
lines changed

3 files changed

+97
-2
lines changed

Diff for: example/lib/pages/alert_page.dart

+12-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:adaptive_dialog/adaptive_dialog.dart';
2+
import 'package:example/result_banner.dart';
23
import 'package:example/router.dart';
34
import 'package:example/util/logger.dart';
45
import 'package:flutter/material.dart';
@@ -10,12 +11,21 @@ class AlertPage extends StatelessWidget {
1011

1112
@override
1213
Widget build(BuildContext context) {
14+
final resultKey = GlobalObjectKey<ResultBannerState>(context);
15+
void updateResult(dynamic result) {
16+
resultKey.currentState.updateText(
17+
result.toString(),
18+
);
19+
logger.info(result);
20+
}
21+
1322
return Scaffold(
1423
appBar: AppBar(
1524
title: Text(pascalCaseFromRouteName(AlertPage.routeName)),
1625
),
1726
body: ListView(
1827
children: <Widget>[
28+
ResultBanner(key: resultKey),
1929
ListTile(
2030
title: const Text('OK Dialog'),
2131
onTap: () async {
@@ -24,7 +34,7 @@ class AlertPage extends StatelessWidget {
2434
title: 'Title',
2535
message: 'This is message.',
2636
);
27-
logger.info(result);
37+
updateResult(result);
2838
},
2939
),
3040
ListTile(
@@ -37,7 +47,7 @@ class AlertPage extends StatelessWidget {
3747
barrierDismissible: false,
3848
);
3949
assert(result == OkCancelResult.ok);
40-
logger.info(result);
50+
updateResult(result);
4151
},
4252
),
4353
ListTile(

Diff for: example/lib/result_banner.dart

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import 'package:flutter/material.dart';
2+
3+
class ResultBanner extends StatefulWidget {
4+
const ResultBanner({Key key}) : super(key: key);
5+
@override
6+
ResultBannerState createState() => ResultBannerState();
7+
}
8+
9+
class ResultBannerState extends State<ResultBanner> {
10+
var _text = '';
11+
12+
void updateText(String text) {
13+
setState(() {
14+
_text = text;
15+
});
16+
}
17+
18+
@override
19+
Widget build(BuildContext context) {
20+
return MaterialBanner(
21+
content: Text('Result: $_text'),
22+
actions: <Widget>[
23+
FlatButton(
24+
child: Text('Clear'),
25+
onPressed: () => updateText(''),
26+
)
27+
],
28+
);
29+
}
30+
}

Diff for: example/test/alert_dialog_test.dart

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// This is a basic Flutter widget test.
2+
//
3+
// To perform an interaction with a widget in your test, use the WidgetTester
4+
// utility that Flutter provides. For example, you can send tap and scroll
5+
// gestures. You can also use WidgetTester to find child widgets in the widget
6+
// tree, read text, and verify that the values of widget properties are correct.
7+
8+
import 'package:example/app.dart';
9+
import 'package:example/router.dart';
10+
import 'package:flutter/material.dart';
11+
import 'package:flutter_test/flutter_test.dart';
12+
import 'package:provider/provider.dart';
13+
14+
void main() {
15+
testWidgets('OK Dialog', (tester) async {
16+
await _setupTester(tester);
17+
18+
await tester.tap(find.widgetWithText(ListTile, 'OK Dialog'));
19+
await tester.pumpAndSettle();
20+
21+
expect(find.text('Title'), findsOneWidget);
22+
expect(find.text('This is message.'), findsOneWidget);
23+
await tester.tap(find.widgetWithText(FlatButton, 'OK'));
24+
await tester.pumpAndSettle();
25+
26+
expect(find.text('Result: OkCancelResult.ok'), findsOneWidget);
27+
});
28+
29+
testWidgets('OK Dialog (barrierDismissible: false)', (tester) async {
30+
await _setupTester(tester);
31+
32+
await tester.tap(
33+
find.widgetWithText(ListTile, 'OK Dialog (barrierDismissible: false)'));
34+
await tester.pumpAndSettle();
35+
36+
expect(find.text('Title'), findsOneWidget);
37+
expect(find.text('This is message.'), findsOneWidget);
38+
await tester.tap(find.widgetWithText(FlatButton, 'OK'));
39+
await tester.pumpAndSettle();
40+
41+
expect(find.text('Result: OkCancelResult.ok'), findsOneWidget);
42+
});
43+
}
44+
45+
Future<void> _setupTester(WidgetTester tester) async {
46+
await tester.pumpWidget(MultiProvider(
47+
providers: [
48+
Provider(create: (context) => Router()),
49+
],
50+
child: const App(),
51+
));
52+
53+
await tester.tap(find.widgetWithText(ListTile, 'Alert'));
54+
await tester.pumpAndSettle();
55+
}

0 commit comments

Comments
 (0)