blob: fac851ada523964a2612b9c57b19421cce648d47 [file] [log] [blame]
Ian Hickson449f4a62019-11-27 15:04:02 -08001// Copyright 2014 The Flutter Authors. All rights reserved.
Collin Jackson701e0d02016-08-24 13:32:27 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Collin Jackson701e0d02016-08-24 13:32:27 -07005import 'package:flutter_test/flutter_test.dart';
Hans Mullerbf3bd762018-04-27 08:11:20 -07006import 'package:flutter_gallery/gallery/app.dart' show GalleryApp;
Collin Jackson701e0d02016-08-24 13:32:27 -07007
8Future<String> mockUpdateUrlFetcher() {
9 // A real implementation would connect to the network to retrieve this value
Alexandre Ardhuind927c932018-09-12 08:29:29 +020010 return Future<String>.value('http://www.example.com/');
Collin Jackson701e0d02016-08-24 13:32:27 -070011}
12
Collin Jackson701e0d02016-08-24 13:32:27 -070013void main() {
Alexandre Ardhuinec0842e2019-12-05 21:33:07 +010014 final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized() as TestWidgetsFlutterBinding;
Alexandre Ardhuin189028a2017-04-04 21:45:50 +020015 if (binding is LiveTestWidgetsFlutterBinding)
Ian Hickson2a545242017-04-12 13:33:02 -070016 binding.framePolicy = LiveTestWidgetsFlutterBindingFramePolicy.fullyLive;
Collin Jackson701e0d02016-08-24 13:32:27 -070017
18 // Regression test for https://github.com/flutter/flutter/pull/5168
19 testWidgets('update dialog', (WidgetTester tester) async {
Hans Muller580c8442018-05-16 11:42:39 -070020 await tester.pumpWidget(
21 const GalleryApp(
22 testMode: true,
Alexandre Ardhuin387f8852019-03-01 08:17:55 +010023 updateUrlFetcher: mockUpdateUrlFetcher,
Hans Muller580c8442018-05-16 11:42:39 -070024 )
25 );
Collin Jackson701e0d02016-08-24 13:32:27 -070026 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 Mullereee986b2018-05-07 09:25:50 -070034 await tester.tap(find.text('Studies'));
Hans Mullerbf3bd762018-04-27 08:11:20 -070035 await tester.pump(); // Launch
Collin Jackson701e0d02016-08-24 13:32:27 -070036 await tester.pump(const Duration(seconds: 1)); // transition is complete
37
Chris Bracken96eea432017-03-03 17:51:21 -080038 final Finder backButton = find.byTooltip('Back');
Collin Jackson701e0d02016-08-24 13:32:27 -070039 expect(backButton, findsOneWidget);
40 await tester.tap(backButton);
41 await tester.pump(); // Start the pop "back" operation.
Hans Muller0ce99172017-01-18 11:04:18 -080042 await tester.pump(); // Complete the willPop() Future.
Collin Jackson701e0d02016-08-24 13:32:27 -070043 await tester.pump(const Duration(seconds: 1)); // transition is complete
Hans Muller0ce99172017-01-18 11:04:18 -080044 //await tester.pumpUntilNoTransientCallbacks(const Duration(seconds: 1));
Collin Jackson701e0d02016-08-24 13:32:27 -070045
46 expect(find.text('UPDATE'), findsNothing);
47 });
48}