blob: 21a366eaa62893697f3e3058f9e2a25065f2cc6c [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:go_router_examples/redirection.dart' as example;
void main() {
testWidgets('example works', (WidgetTester tester) async {
await tester.pumpWidget(example.App());
expect(find.text('Login'), findsOneWidget);
// Directly set the url to the home page.
Map<String, dynamic> testRouteInformation = <String, dynamic>{
'location': '/',
};
ByteData message = const JSONMethodCodec().encodeMethodCall(
MethodCall('pushRouteInformation', testRouteInformation),
);
await ServicesBinding.instance.defaultBinaryMessenger
.handlePlatformMessage('flutter/navigation', message, (_) {});
await tester.pumpAndSettle();
// Still show login page due to redirection
expect(find.text('Login'), findsOneWidget);
await tester.tap(find.text('Login'));
await tester.pumpAndSettle();
expect(find.text('HomeScreen'), findsOneWidget);
testRouteInformation = <String, dynamic>{
'location': '/login',
};
message = const JSONMethodCodec().encodeMethodCall(
MethodCall('pushRouteInformation', testRouteInformation),
);
await ServicesBinding.instance.defaultBinaryMessenger
.handlePlatformMessage('flutter/navigation', message, (_) {});
await tester.pumpAndSettle();
// Got redirected back to home page.
expect(find.text('HomeScreen'), findsOneWidget);
// Tap logout.
await tester.tap(find.byType(IconButton));
await tester.pumpAndSettle();
expect(find.text('Login'), findsOneWidget);
});
}