Jonny Borges
Committed by GitHub

Merge pull request #131 from chimon2000/feat/add_tests

Add unit tests
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_test/flutter_test.dart';
  3 +import 'package:get/get.dart';
  4 +
  5 +import 'util/wrapper.dart';
  6 +
  7 +void main() {
  8 + testWidgets("Get.bottomSheet smoke test", (tester) async {
  9 + await tester.pumpWidget(
  10 + Wrapper(child: Container()),
  11 + );
  12 +
  13 + Get.bottomSheet(Container(
  14 + child: Wrap(
  15 + children: <Widget>[
  16 + ListTile(
  17 + leading: Icon(Icons.music_note),
  18 + title: Text('Music'),
  19 + onTap: () => {}),
  20 + ],
  21 + ),
  22 + ));
  23 +
  24 + await tester.pumpAndSettle();
  25 +
  26 + expect(find.byIcon(Icons.music_note), findsOneWidget);
  27 + });
  28 +}
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_test/flutter_test.dart';
  3 +import 'package:get/get.dart';
  4 +
  5 +import 'util/wrapper.dart';
  6 +
  7 +void main() {
  8 + testWidgets("Get.defaultDialog smoke test", (tester) async {
  9 + await tester.pumpWidget(
  10 + Wrapper(child: Container()),
  11 + );
  12 +
  13 + Get.defaultDialog(
  14 + onConfirm: () => print("Ok"),
  15 + middleText: "Dialog made in 3 lines of code");
  16 +
  17 + await tester.pumpAndSettle();
  18 +
  19 + expect(find.text("Ok"), findsOneWidget);
  20 + });
  21 +
  22 + testWidgets("Get.dialog smoke test", (tester) async {
  23 + await tester.pumpWidget(
  24 + Wrapper(child: Container()),
  25 + );
  26 +
  27 + Get.dialog(YourDialogWidget());
  28 +
  29 + await tester.pumpAndSettle();
  30 +
  31 + expect(find.byType(YourDialogWidget), findsOneWidget);
  32 + });
  33 +}
  34 +
  35 +class YourDialogWidget extends StatelessWidget {
  36 + const YourDialogWidget({Key key}) : super(key: key);
  37 +
  38 + @override
  39 + Widget build(BuildContext context) {
  40 + return Container();
  41 + }
  42 +}
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_test/flutter_test.dart';
  3 +import 'package:get/get.dart';
  4 +
  5 +import 'util/wrapper.dart';
  6 +
  7 +void main() {
  8 + testWidgets("Get.to smoke test", (tester) async {
  9 + await tester.pumpWidget(
  10 + Wrapper(child: Container()),
  11 + );
  12 +
  13 + Get.to(SecondScreen());
  14 +
  15 + await tester.pumpAndSettle();
  16 +
  17 + expect(find.byType(SecondScreen), findsOneWidget);
  18 + });
  19 + testWidgets("Get.toNamed smoke test", (tester) async {
  20 + await tester.pumpWidget(
  21 + Wrapper(
  22 + initialRoute: '/',
  23 + namedRoutes: {
  24 + '/': GetRoute(page: FirstScreen()),
  25 + '/second': GetRoute(page: SecondScreen()),
  26 + '/third': GetRoute(page: ThirdScreen())
  27 + },
  28 + child: Container(),
  29 + ),
  30 + );
  31 +
  32 + Get.toNamed('/second');
  33 +
  34 + await tester.pumpAndSettle();
  35 +
  36 + expect(find.byType(SecondScreen), findsOneWidget);
  37 + });
  38 +
  39 + testWidgets("Get.off smoke test", (tester) async {
  40 + await tester.pumpWidget(
  41 + Wrapper(child: Container()),
  42 + );
  43 +
  44 + Get.to(FirstScreen());
  45 +
  46 + await tester.pumpAndSettle();
  47 +
  48 + expect(find.byType(FirstScreen), findsOneWidget);
  49 +
  50 + Get.off(SecondScreen());
  51 +
  52 + await tester.pumpAndSettle();
  53 +
  54 + expect(find.byType(SecondScreen), findsOneWidget);
  55 + });
  56 +
  57 + testWidgets("Get.offNamed smoke test", (tester) async {
  58 + await tester.pumpWidget(
  59 + Wrapper(
  60 + initialRoute: '/',
  61 + namedRoutes: {
  62 + '/': GetRoute(page: Container()),
  63 + '/first': GetRoute(page: FirstScreen()),
  64 + '/second': GetRoute(page: SecondScreen()),
  65 + '/third': GetRoute(page: ThirdScreen())
  66 + },
  67 + child: Container(),
  68 + ),
  69 + );
  70 +
  71 + Get.toNamed('/first');
  72 +
  73 + await tester.pumpAndSettle();
  74 +
  75 + expect(find.byType(FirstScreen), findsOneWidget);
  76 +
  77 + Get.offNamed('/second');
  78 +
  79 + await tester.pumpAndSettle();
  80 +
  81 + expect(find.byType(SecondScreen), findsOneWidget);
  82 + });
  83 +
  84 + testWidgets("Get.offAll smoke test", (tester) async {
  85 + await tester.pumpWidget(
  86 + Wrapper(child: Container()),
  87 + );
  88 +
  89 + Get.to(FirstScreen());
  90 +
  91 + await tester.pumpAndSettle();
  92 +
  93 + expect(find.byType(FirstScreen), findsOneWidget);
  94 +
  95 + Get.to(SecondScreen());
  96 +
  97 + await tester.pumpAndSettle();
  98 +
  99 + expect(find.byType(SecondScreen), findsOneWidget);
  100 +
  101 + Get.offAll(ThirdScreen());
  102 +
  103 + await tester.pumpAndSettle();
  104 +
  105 + expect(find.byType(ThirdScreen), findsOneWidget);
  106 + });
  107 +
  108 + testWidgets("Get.offAllNamed smoke test", (tester) async {
  109 + await tester.pumpWidget(
  110 + Wrapper(
  111 + initialRoute: '/',
  112 + namedRoutes: {
  113 + '/': GetRoute(page: Container()),
  114 + '/first': GetRoute(page: FirstScreen()),
  115 + '/second': GetRoute(page: SecondScreen()),
  116 + '/third': GetRoute(page: ThirdScreen())
  117 + },
  118 + child: Container(),
  119 + ),
  120 + );
  121 +
  122 + Get.toNamed('/first');
  123 +
  124 + await tester.pumpAndSettle();
  125 +
  126 + expect(find.byType(FirstScreen), findsOneWidget);
  127 +
  128 + Get.toNamed('/second');
  129 +
  130 + await tester.pumpAndSettle();
  131 +
  132 + expect(find.byType(SecondScreen), findsOneWidget);
  133 +
  134 + Get.offAllNamed('/third');
  135 +
  136 + await tester.pumpAndSettle();
  137 +
  138 + expect(find.byType(ThirdScreen), findsOneWidget);
  139 + });
  140 +
  141 + testWidgets("Get.offAndToNamed smoke test", (tester) async {
  142 + await tester.pumpWidget(
  143 + Wrapper(
  144 + initialRoute: '/',
  145 + namedRoutes: {
  146 + '/': GetRoute(page: Container()),
  147 + '/first': GetRoute(page: FirstScreen()),
  148 + '/second': GetRoute(page: SecondScreen()),
  149 + '/third': GetRoute(page: ThirdScreen())
  150 + },
  151 + child: Container(),
  152 + ),
  153 + );
  154 +
  155 + Get.toNamed('/first');
  156 +
  157 + await tester.pumpAndSettle();
  158 +
  159 + expect(find.byType(FirstScreen), findsOneWidget);
  160 +
  161 + Get.offAndToNamed('/second');
  162 +
  163 + await tester.pumpAndSettle();
  164 +
  165 + expect(find.byType(SecondScreen), findsOneWidget);
  166 + });
  167 +
  168 + testWidgets("Get.offUntil smoke test", (tester) async {
  169 + await tester.pumpWidget(
  170 + Wrapper(
  171 + child: Container(),
  172 + ),
  173 + );
  174 +
  175 + Get.to(FirstScreen());
  176 +
  177 + await tester.pumpAndSettle();
  178 +
  179 + expect(find.byType(FirstScreen), findsOneWidget);
  180 +
  181 + Get.offUntil(
  182 + MaterialPageRoute(builder: (BuildContext context) => SecondScreen()),
  183 + ModalRoute.withName('/'));
  184 +
  185 + await tester.pumpAndSettle();
  186 +
  187 + expect(find.byType(SecondScreen), findsOneWidget);
  188 + });
  189 +
  190 + testWidgets("Get.offNamedUntil smoke test", (tester) async {
  191 + await tester.pumpWidget(
  192 + Wrapper(
  193 + initialRoute: '/',
  194 + namedRoutes: {
  195 + '/': GetRoute(page: Container()),
  196 + '/first': GetRoute(page: FirstScreen()),
  197 + '/second': GetRoute(page: SecondScreen()),
  198 + '/third': GetRoute(page: ThirdScreen())
  199 + },
  200 + child: Container(),
  201 + ),
  202 + );
  203 +
  204 + Get.toNamed('/first');
  205 +
  206 + await tester.pumpAndSettle();
  207 +
  208 + expect(find.byType(FirstScreen), findsOneWidget);
  209 +
  210 + Get.offNamedUntil('/first', ModalRoute.withName('/'));
  211 +
  212 + await tester.pumpAndSettle();
  213 +
  214 + expect(find.byType(FirstScreen), findsOneWidget);
  215 + });
  216 +
  217 + testWidgets("Get.back smoke test", (tester) async {
  218 + await tester.pumpWidget(
  219 + Wrapper(child: Container()),
  220 + );
  221 +
  222 + Get.to(FirstScreen());
  223 +
  224 + await tester.pumpAndSettle();
  225 +
  226 + expect(find.byType(FirstScreen), findsOneWidget);
  227 +
  228 + Get.to(SecondScreen());
  229 +
  230 + await tester.pumpAndSettle();
  231 +
  232 + expect(find.byType(SecondScreen), findsOneWidget);
  233 +
  234 + Get.back();
  235 +
  236 + await tester.pumpAndSettle();
  237 +
  238 + expect(find.byType(FirstScreen), findsOneWidget);
  239 + });
  240 +
  241 + testWidgets("Get.defaultTransition smoke test", (tester) async {
  242 + await tester.pumpWidget(
  243 + Wrapper(
  244 + child: Container(),
  245 + defaultTransition: Transition.cupertino,
  246 + ),
  247 + );
  248 +
  249 + Get.to(FirstScreen());
  250 +
  251 + await tester.pumpAndSettle();
  252 +
  253 + expect(find.byType(FirstScreen), findsOneWidget);
  254 +
  255 + await tester.pumpWidget(
  256 + Wrapper(
  257 + child: Container(),
  258 + defaultTransition: Transition.downToUp,
  259 + ),
  260 + );
  261 +
  262 + Get.to(FirstScreen());
  263 +
  264 + await tester.pumpAndSettle();
  265 +
  266 + expect(find.byType(FirstScreen), findsOneWidget);
  267 +
  268 + await tester.pumpWidget(
  269 + Wrapper(
  270 + child: Container(),
  271 + defaultTransition: Transition.fade,
  272 + ),
  273 + );
  274 +
  275 + Get.to(FirstScreen());
  276 +
  277 + await tester.pumpAndSettle();
  278 +
  279 + expect(find.byType(FirstScreen), findsOneWidget);
  280 +
  281 + await tester.pumpWidget(
  282 + Wrapper(
  283 + child: Container(),
  284 + defaultTransition: Transition.leftToRight,
  285 + ),
  286 + );
  287 +
  288 + Get.to(FirstScreen());
  289 +
  290 + await tester.pumpAndSettle();
  291 +
  292 + expect(find.byType(FirstScreen), findsOneWidget);
  293 +
  294 + await tester.pumpWidget(
  295 + Wrapper(
  296 + child: Container(),
  297 + defaultTransition: Transition.leftToRightWithFade,
  298 + ),
  299 + );
  300 +
  301 + Get.to(FirstScreen());
  302 +
  303 + await tester.pumpAndSettle();
  304 +
  305 + expect(find.byType(FirstScreen), findsOneWidget);
  306 +
  307 + await tester.pumpWidget(
  308 + Wrapper(
  309 + child: Container(),
  310 + defaultTransition: Transition.rightToLeft,
  311 + ),
  312 + );
  313 +
  314 + Get.to(FirstScreen());
  315 +
  316 + await tester.pumpAndSettle();
  317 +
  318 + expect(find.byType(FirstScreen), findsOneWidget);
  319 +
  320 + await tester.pumpWidget(
  321 + Wrapper(
  322 + child: Container(),
  323 + defaultTransition: Transition.rightToLeftWithFade,
  324 + ),
  325 + );
  326 +
  327 + Get.to(FirstScreen());
  328 +
  329 + await tester.pumpAndSettle();
  330 +
  331 + expect(find.byType(FirstScreen), findsOneWidget);
  332 + });
  333 +}
  334 +
  335 +class FirstScreen extends StatelessWidget {
  336 + const FirstScreen({Key key}) : super(key: key);
  337 +
  338 + @override
  339 + Widget build(BuildContext context) {
  340 + return Container();
  341 + }
  342 +}
  343 +
  344 +class SecondScreen extends StatelessWidget {
  345 + const SecondScreen({Key key}) : super(key: key);
  346 +
  347 + @override
  348 + Widget build(BuildContext context) {
  349 + return Container();
  350 + }
  351 +}
  352 +
  353 +class ThirdScreen extends StatelessWidget {
  354 + const ThirdScreen({Key key}) : super(key: key);
  355 +
  356 + @override
  357 + Widget build(BuildContext context) {
  358 + return Container();
  359 + }
  360 +}
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_test/flutter_test.dart';
  3 +import 'package:get/get.dart';
  4 +
  5 +void main() {
  6 + testWidgets("GetController smoke test", (tester) async {
  7 + await tester.pumpWidget(
  8 + MaterialApp(
  9 + home: GetX<Controller>(
  10 + init: Controller(),
  11 + builder: (controller) {
  12 + return Column(
  13 + children: [
  14 + Text(
  15 + 'Count: ${controller.counter.value}',
  16 + ),
  17 + Text(
  18 + 'Double: ${controller.doubleNum.value}',
  19 + ),
  20 + Text(
  21 + 'String: ${controller.string.value}',
  22 + ),
  23 + Text(
  24 + 'List: ${controller.list.length}',
  25 + ),
  26 + Text(
  27 + 'Bool: ${controller.boolean.value}',
  28 + ),
  29 + Text(
  30 + 'Map: ${controller.map.value.length}',
  31 + ),
  32 + FlatButton(
  33 + child: Text("increment"),
  34 + onPressed: () => controller.increment(),
  35 + )
  36 + ],
  37 + );
  38 + },
  39 + ),
  40 + ),
  41 + );
  42 +
  43 + expect(find.text("Count: 0"), findsOneWidget);
  44 + expect(find.text("Double: 0.0"), findsOneWidget);
  45 + expect(find.text("String: string"), findsOneWidget);
  46 + expect(find.text("Bool: true"), findsOneWidget);
  47 + expect(find.text("List: 0"), findsOneWidget);
  48 + expect(find.text("Map: 0"), findsOneWidget);
  49 +
  50 + Controller.to.increment();
  51 +
  52 + await tester.pump();
  53 +
  54 + expect(find.text("Count: 1"), findsOneWidget);
  55 +
  56 + await tester.tap(find.text('increment'));
  57 +
  58 + await tester.pump();
  59 +
  60 + expect(find.text("Count: 2"), findsOneWidget);
  61 + });
  62 +}
  63 +
  64 +class Controller extends RxController {
  65 + static Controller get to => Get.find();
  66 +
  67 + var counter = 0.obs;
  68 + var doubleNum = 0.0.obs;
  69 + var string = "string".obs;
  70 + var list = [].obs;
  71 + var map = {}.obs;
  72 + var boolean = true.obs;
  73 +
  74 + void increment() {
  75 + counter.value++;
  76 + }
  77 +}
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_test/flutter_test.dart';
  3 +import 'package:get/get.dart';
  4 +
  5 +void main() {
  6 + testWidgets("GetController smoke test", (tester) async {
  7 + await tester.pumpWidget(
  8 + MaterialApp(
  9 + home: GetBuilder<Controller>(
  10 + init: Controller(),
  11 + builder: (controller) => Column(
  12 + children: [
  13 + Text(
  14 + '${controller.counter}',
  15 + ),
  16 + FlatButton(
  17 + child: Text("increment"),
  18 + onPressed: () => controller.increment(),
  19 + )
  20 + ],
  21 + ),
  22 + ),
  23 + ),
  24 + );
  25 +
  26 + expect(find.text("0"), findsOneWidget);
  27 +
  28 + Controller.to.increment();
  29 +
  30 + await tester.pump();
  31 +
  32 + expect(find.text("1"), findsOneWidget);
  33 +
  34 + await tester.tap(find.text('increment'));
  35 +
  36 + await tester.pump();
  37 +
  38 + expect(find.text("2"), findsOneWidget);
  39 + });
  40 +}
  41 +
  42 +class Controller extends GetController {
  43 + static Controller get to => Get.find();
  44 +
  45 + int counter = 0;
  46 + void increment() {
  47 + counter++;
  48 + update(this);
  49 + }
  50 +}
  1 +import 'package:flutter/material.dart';
  2 +import 'package:get/get.dart';
  3 +
  4 +class Wrapper extends StatelessWidget {
  5 + final Widget child;
  6 + final Map<String, GetRoute> namedRoutes;
  7 + final String initialRoute;
  8 + final Transition defaultTransition;
  9 +
  10 + const Wrapper({
  11 + Key key,
  12 + this.child,
  13 + this.namedRoutes,
  14 + this.initialRoute,
  15 + this.defaultTransition,
  16 + }) : super(key: key);
  17 +
  18 + @override
  19 + Widget build(BuildContext context) {
  20 + return GetMaterialApp(
  21 + defaultTransition: defaultTransition,
  22 + initialRoute: initialRoute,
  23 + namedRoutes: namedRoutes,
  24 + home: Scaffold(
  25 + body: child,
  26 + ),
  27 + );
  28 + }
  29 +}