Ian Hickson | 449f4a6 | 2019-11-27 15:04:02 -0800 | [diff] [blame] | 1 | // Copyright 2014 The Flutter Authors. All rights reserved. |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 5 | import 'package:flutter_test/flutter_test.dart'; |
Hans Muller | bf3bd76 | 2018-04-27 08:11:20 -0700 | [diff] [blame] | 6 | import 'package:flutter_gallery/gallery/app.dart' show GalleryApp; |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 7 | |
| 8 | Future<String> mockUpdateUrlFetcher() { |
| 9 | // A real implementation would connect to the network to retrieve this value |
Alexandre Ardhuin | d927c93 | 2018-09-12 08:29:29 +0200 | [diff] [blame] | 10 | return Future<String>.value('http://www.example.com/'); |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 11 | } |
| 12 | |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 13 | void main() { |
Alexandre Ardhuin | ec0842e | 2019-12-05 21:33:07 +0100 | [diff] [blame] | 14 | final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized() as TestWidgetsFlutterBinding; |
Alexandre Ardhuin | 189028a | 2017-04-04 21:45:50 +0200 | [diff] [blame] | 15 | if (binding is LiveTestWidgetsFlutterBinding) |
Ian Hickson | 2a54524 | 2017-04-12 13:33:02 -0700 | [diff] [blame] | 16 | binding.framePolicy = LiveTestWidgetsFlutterBindingFramePolicy.fullyLive; |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 17 | |
| 18 | // Regression test for https://github.com/flutter/flutter/pull/5168 |
| 19 | testWidgets('update dialog', (WidgetTester tester) async { |
Hans Muller | 580c844 | 2018-05-16 11:42:39 -0700 | [diff] [blame] | 20 | await tester.pumpWidget( |
| 21 | const GalleryApp( |
| 22 | testMode: true, |
Alexandre Ardhuin | 387f885 | 2019-03-01 08:17:55 +0100 | [diff] [blame] | 23 | updateUrlFetcher: mockUpdateUrlFetcher, |
Hans Muller | 580c844 | 2018-05-16 11:42:39 -0700 | [diff] [blame] | 24 | ) |
| 25 | ); |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 26 | await tester.pump(); // see https://github.com/flutter/flutter/issues/1865 |
| 27 | await tester.pump(); // triggers a frame |
| 28 | |
| 29 | expect(find.text('UPDATE'), findsOneWidget); |
| 30 | |
| 31 | await tester.tap(find.text('NO THANKS')); |
| 32 | await tester.pump(); |
| 33 | |
Hans Muller | eee986b | 2018-05-07 09:25:50 -0700 | [diff] [blame] | 34 | await tester.tap(find.text('Studies')); |
Hans Muller | bf3bd76 | 2018-04-27 08:11:20 -0700 | [diff] [blame] | 35 | await tester.pump(); // Launch |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 36 | await tester.pump(const Duration(seconds: 1)); // transition is complete |
| 37 | |
Chris Bracken | 96eea43 | 2017-03-03 17:51:21 -0800 | [diff] [blame] | 38 | final Finder backButton = find.byTooltip('Back'); |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 39 | expect(backButton, findsOneWidget); |
| 40 | await tester.tap(backButton); |
| 41 | await tester.pump(); // Start the pop "back" operation. |
Hans Muller | 0ce9917 | 2017-01-18 11:04:18 -0800 | [diff] [blame] | 42 | await tester.pump(); // Complete the willPop() Future. |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 43 | await tester.pump(const Duration(seconds: 1)); // transition is complete |
Hans Muller | 0ce9917 | 2017-01-18 11:04:18 -0800 | [diff] [blame] | 44 | //await tester.pumpUntilNoTransientCallbacks(const Duration(seconds: 1)); |
Collin Jackson | 701e0d0 | 2016-08-24 13:32:27 -0700 | [diff] [blame] | 45 | |
| 46 | expect(find.text('UPDATE'), findsNothing); |
| 47 | }); |
| 48 | } |