Jonny Borges
Committed by GitHub

Merge pull request #131 from chimon2000/feat/add_tests

Add unit tests
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
import 'util/wrapper.dart';
void main() {
testWidgets("Get.bottomSheet smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(child: Container()),
);
Get.bottomSheet(Container(
child: Wrap(
children: <Widget>[
ListTile(
leading: Icon(Icons.music_note),
title: Text('Music'),
onTap: () => {}),
],
),
));
await tester.pumpAndSettle();
expect(find.byIcon(Icons.music_note), findsOneWidget);
});
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
import 'util/wrapper.dart';
void main() {
testWidgets("Get.defaultDialog smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(child: Container()),
);
Get.defaultDialog(
onConfirm: () => print("Ok"),
middleText: "Dialog made in 3 lines of code");
await tester.pumpAndSettle();
expect(find.text("Ok"), findsOneWidget);
});
testWidgets("Get.dialog smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(child: Container()),
);
Get.dialog(YourDialogWidget());
await tester.pumpAndSettle();
expect(find.byType(YourDialogWidget), findsOneWidget);
});
}
class YourDialogWidget extends StatelessWidget {
const YourDialogWidget({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container();
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
import 'util/wrapper.dart';
void main() {
testWidgets("Get.to smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(child: Container()),
);
Get.to(SecondScreen());
await tester.pumpAndSettle();
expect(find.byType(SecondScreen), findsOneWidget);
});
testWidgets("Get.toNamed smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(
initialRoute: '/',
namedRoutes: {
'/': GetRoute(page: FirstScreen()),
'/second': GetRoute(page: SecondScreen()),
'/third': GetRoute(page: ThirdScreen())
},
child: Container(),
),
);
Get.toNamed('/second');
await tester.pumpAndSettle();
expect(find.byType(SecondScreen), findsOneWidget);
});
testWidgets("Get.off smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(child: Container()),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
Get.off(SecondScreen());
await tester.pumpAndSettle();
expect(find.byType(SecondScreen), findsOneWidget);
});
testWidgets("Get.offNamed smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(
initialRoute: '/',
namedRoutes: {
'/': GetRoute(page: Container()),
'/first': GetRoute(page: FirstScreen()),
'/second': GetRoute(page: SecondScreen()),
'/third': GetRoute(page: ThirdScreen())
},
child: Container(),
),
);
Get.toNamed('/first');
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
Get.offNamed('/second');
await tester.pumpAndSettle();
expect(find.byType(SecondScreen), findsOneWidget);
});
testWidgets("Get.offAll smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(child: Container()),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
Get.to(SecondScreen());
await tester.pumpAndSettle();
expect(find.byType(SecondScreen), findsOneWidget);
Get.offAll(ThirdScreen());
await tester.pumpAndSettle();
expect(find.byType(ThirdScreen), findsOneWidget);
});
testWidgets("Get.offAllNamed smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(
initialRoute: '/',
namedRoutes: {
'/': GetRoute(page: Container()),
'/first': GetRoute(page: FirstScreen()),
'/second': GetRoute(page: SecondScreen()),
'/third': GetRoute(page: ThirdScreen())
},
child: Container(),
),
);
Get.toNamed('/first');
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
Get.toNamed('/second');
await tester.pumpAndSettle();
expect(find.byType(SecondScreen), findsOneWidget);
Get.offAllNamed('/third');
await tester.pumpAndSettle();
expect(find.byType(ThirdScreen), findsOneWidget);
});
testWidgets("Get.offAndToNamed smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(
initialRoute: '/',
namedRoutes: {
'/': GetRoute(page: Container()),
'/first': GetRoute(page: FirstScreen()),
'/second': GetRoute(page: SecondScreen()),
'/third': GetRoute(page: ThirdScreen())
},
child: Container(),
),
);
Get.toNamed('/first');
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
Get.offAndToNamed('/second');
await tester.pumpAndSettle();
expect(find.byType(SecondScreen), findsOneWidget);
});
testWidgets("Get.offUntil smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(
child: Container(),
),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
Get.offUntil(
MaterialPageRoute(builder: (BuildContext context) => SecondScreen()),
ModalRoute.withName('/'));
await tester.pumpAndSettle();
expect(find.byType(SecondScreen), findsOneWidget);
});
testWidgets("Get.offNamedUntil smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(
initialRoute: '/',
namedRoutes: {
'/': GetRoute(page: Container()),
'/first': GetRoute(page: FirstScreen()),
'/second': GetRoute(page: SecondScreen()),
'/third': GetRoute(page: ThirdScreen())
},
child: Container(),
),
);
Get.toNamed('/first');
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
Get.offNamedUntil('/first', ModalRoute.withName('/'));
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
});
testWidgets("Get.back smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(child: Container()),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
Get.to(SecondScreen());
await tester.pumpAndSettle();
expect(find.byType(SecondScreen), findsOneWidget);
Get.back();
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
});
testWidgets("Get.defaultTransition smoke test", (tester) async {
await tester.pumpWidget(
Wrapper(
child: Container(),
defaultTransition: Transition.cupertino,
),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
await tester.pumpWidget(
Wrapper(
child: Container(),
defaultTransition: Transition.downToUp,
),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
await tester.pumpWidget(
Wrapper(
child: Container(),
defaultTransition: Transition.fade,
),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
await tester.pumpWidget(
Wrapper(
child: Container(),
defaultTransition: Transition.leftToRight,
),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
await tester.pumpWidget(
Wrapper(
child: Container(),
defaultTransition: Transition.leftToRightWithFade,
),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
await tester.pumpWidget(
Wrapper(
child: Container(),
defaultTransition: Transition.rightToLeft,
),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
await tester.pumpWidget(
Wrapper(
child: Container(),
defaultTransition: Transition.rightToLeftWithFade,
),
);
Get.to(FirstScreen());
await tester.pumpAndSettle();
expect(find.byType(FirstScreen), findsOneWidget);
});
}
class FirstScreen extends StatelessWidget {
const FirstScreen({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container();
}
}
class SecondScreen extends StatelessWidget {
const SecondScreen({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container();
}
}
class ThirdScreen extends StatelessWidget {
const ThirdScreen({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container();
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
void main() {
testWidgets("GetController smoke test", (tester) async {
await tester.pumpWidget(
MaterialApp(
home: GetX<Controller>(
init: Controller(),
builder: (controller) {
return Column(
children: [
Text(
'Count: ${controller.counter.value}',
),
Text(
'Double: ${controller.doubleNum.value}',
),
Text(
'String: ${controller.string.value}',
),
Text(
'List: ${controller.list.length}',
),
Text(
'Bool: ${controller.boolean.value}',
),
Text(
'Map: ${controller.map.value.length}',
),
FlatButton(
child: Text("increment"),
onPressed: () => controller.increment(),
)
],
);
},
),
),
);
expect(find.text("Count: 0"), findsOneWidget);
expect(find.text("Double: 0.0"), findsOneWidget);
expect(find.text("String: string"), findsOneWidget);
expect(find.text("Bool: true"), findsOneWidget);
expect(find.text("List: 0"), findsOneWidget);
expect(find.text("Map: 0"), findsOneWidget);
Controller.to.increment();
await tester.pump();
expect(find.text("Count: 1"), findsOneWidget);
await tester.tap(find.text('increment'));
await tester.pump();
expect(find.text("Count: 2"), findsOneWidget);
});
}
class Controller extends RxController {
static Controller get to => Get.find();
var counter = 0.obs;
var doubleNum = 0.0.obs;
var string = "string".obs;
var list = [].obs;
var map = {}.obs;
var boolean = true.obs;
void increment() {
counter.value++;
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
void main() {
testWidgets("GetController smoke test", (tester) async {
await tester.pumpWidget(
MaterialApp(
home: GetBuilder<Controller>(
init: Controller(),
builder: (controller) => Column(
children: [
Text(
'${controller.counter}',
),
FlatButton(
child: Text("increment"),
onPressed: () => controller.increment(),
)
],
),
),
),
);
expect(find.text("0"), findsOneWidget);
Controller.to.increment();
await tester.pump();
expect(find.text("1"), findsOneWidget);
await tester.tap(find.text('increment'));
await tester.pump();
expect(find.text("2"), findsOneWidget);
});
}
class Controller extends GetController {
static Controller get to => Get.find();
int counter = 0;
void increment() {
counter++;
update(this);
}
}
... ...
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class Wrapper extends StatelessWidget {
final Widget child;
final Map<String, GetRoute> namedRoutes;
final String initialRoute;
final Transition defaultTransition;
const Wrapper({
Key key,
this.child,
this.namedRoutes,
this.initialRoute,
this.defaultTransition,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
defaultTransition: defaultTransition,
initialRoute: initialRoute,
namedRoutes: namedRoutes,
home: Scaffold(
body: child,
),
);
}
}
... ...