Commit 3c35d2e8 authored by Jim's avatar Jim Committed by GitHub

Merge pull request #612 from Vadaski/master

add container manager test
parents 69a752f8 c23a8f3f
...@@ -3,6 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; ...@@ -3,6 +3,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_boost/flutter_boost.dart'; import 'package:flutter_boost/flutter_boost.dart';
import 'package:flutter_boost/container/container_coordinator.dart';
final GlobalKey scaffoldKey = GlobalKey(); final GlobalKey scaffoldKey = GlobalKey();
...@@ -94,9 +95,6 @@ class _MyAppState extends State<MyApp> { ...@@ -94,9 +95,6 @@ class _MyAppState extends State<MyApp> {
}, },
home: Container()); home: Container());
} }
void _onRoutePushed(
String pageName, String uniqueId, Map params, Route route, Future _) {}
} }
void main() { void main() {
...@@ -108,4 +106,190 @@ void main() { ...@@ -108,4 +106,190 @@ void main() {
expect(find.text('First'), findsNothing); expect(find.text('First'), findsNothing);
}); });
group(
'Try to get the ContainerManagerState in the ancestor node',
() {
testWidgets(
'through the `BoostContainerManager.of(context)` method',
(WidgetTester tester) async {
var builderContext;
FlutterBoost.singleton.registerPageBuilders({
'context': (pageName, params, _) => Builder(
builder: (context) {
return FloatingActionButton(
onPressed: () {
builderContext = context;
},
);
},
),
});
await tester.pumpWidget(
MaterialApp(
builder: FlutterBoost.init(),
home: Container(),
),
);
//open context page
ContainerCoordinator.singleton
.nativeContainerDidShow("context", {}, "1000000");
await tester.pump(Duration(seconds: 1));
expect(find.byType(FloatingActionButton), findsOneWidget);
//get the context of the Builder
await tester.tap(find.byType(FloatingActionButton));
final isFind = BoostContainerManager.of(builderContext) != null;
expect(isFind, true,
reason: '`BoostContainerManager.of` should be able to '
'find `ContainerManagerState` in `FlutterBoost.init()` based on the context of the `Builder`');
},
);
// testWidgets(
// 'through the `BoostContainerManager.of(context)` method',
// (WidgetTester tester) async {
// var builderContext;
//
// await tester.pumpWidget(
// MaterialApp(
// home: Builder(
// builder: (context) {
// return FloatingActionButton(
// onPressed: () {
// builderContext = context;
// },
// );
// },
// ),
// ),
// );
//
// expect(find.byType(FloatingActionButton), findsOneWidget);
//
// //get the context of the Builder
// await tester.tap(find.byType(FloatingActionButton));
//
// expect(BoostContainerManager.of(builderContext), isAssertionError);
// },
// );
testWidgets(
'through the `BoostContainerManager.tryOf(context)` method',
(WidgetTester tester) async {
var builderContext;
FlutterBoost.singleton.registerPageBuilders({
'context': (pageName, params, _) => Builder(
builder: (context) {
return FloatingActionButton(
onPressed: () {
builderContext = context;
},
);
},
),
});
await tester.pumpWidget(
MaterialApp(
builder: FlutterBoost.init(),
home: Container(),
),
);
//open context page
ContainerCoordinator.singleton
.nativeContainerDidShow("context", {}, "1000000");
await tester.pump(Duration(seconds: 1));
expect(find.byType(FloatingActionButton), findsOneWidget);
//get the context of the Builder
await tester.tap(find.byType(FloatingActionButton));
final isFind = BoostContainerManager.tryOf(builderContext) != null;
expect(isFind, true,
reason: '`BoostContainerManager.tryOf` should be able to '
'find `ContainerManagerState` in `FlutterBoost.init()` based on the context of the `Builder`');
},
);
},
);
group('ContainerManagerState', () {
testWidgets(
'containerCounts should change based on the number of pages',
(WidgetTester tester) async {
var builderContext;
FlutterBoost.singleton.registerPageBuilders({
'context': (pageName, params, _) => Builder(
builder: (context) {
return FloatingActionButton(
onPressed: () {
builderContext = context;
},
);
},
),
});
await tester.pumpWidget(
MaterialApp(
builder: FlutterBoost.init(),
home: Container(),
),
);
//open first context page
ContainerCoordinator.singleton
.nativeContainerDidShow("context", {}, "1000000");
await tester.pump(Duration(seconds: 1));
//get the context of the Builder
await tester.tap(find.byType(FloatingActionButton));
final containerManagerState = BoostContainerManager.of(builderContext);
expect(containerManagerState.containerCounts, 1,
reason: '1 page shown');
//open second context page
ContainerCoordinator.singleton
.nativeContainerDidShow("context", {}, "2000000");
await tester.pump(Duration(seconds: 1));
expect(containerManagerState.containerCounts, 2,
reason: '2 page shown');
//pop second context page
containerManagerState.pop();
await tester.pump(Duration(seconds: 1));
expect(containerManagerState.containerCounts, 1,
reason: 'second context page closed, Only one page left');
//pop last context page
containerManagerState.pop();
await tester.pump(Duration(seconds: 1));
expect(containerManagerState.containerCounts, 0,
reason: 'last context page closed, no page left');
},
);
});
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment