From 22f1f7a0c39e545b4a1f486c38089b952e703bd6 Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 20 Feb 2020 22:54:21 +0100 Subject: [PATCH] [Tests] Add simple signUp test and try to make non named routes detectable (not working) Took 55 minutes --- lib/views/sign_up.dart | 4 ++++ test/login_test.dart | 7 +++++++ test/sign_up_test.dart | 40 ++++++++++++++++++++++++++++++++++++++++ test/utils.dart | 12 ++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 test/sign_up_test.dart diff --git a/lib/views/sign_up.dart b/lib/views/sign_up.dart index 888afeae..c6f22305 100644 --- a/lib/views/sign_up.dart +++ b/lib/views/sign_up.dart @@ -94,6 +94,7 @@ class _SignUpState extends State { return Scaffold( appBar: AppBar( title: TextField( + key: Key("serverField"), autocorrect: false, controller: serverController, decoration: InputDecoration( @@ -149,6 +150,7 @@ class _SignUpState extends State { ), ), title: TextField( + key: Key("usernameField"), autocorrect: false, controller: usernameController, onSubmitted: (s) => signUpAction(context), @@ -163,6 +165,7 @@ class _SignUpState extends State { height: 50, padding: EdgeInsets.symmetric(horizontal: 12), child: RaisedButton( + key: Key("signUpButton"), elevation: 7, color: Theme.of(context).primaryColor, shape: RoundedRectangleBorder( @@ -179,6 +182,7 @@ class _SignUpState extends State { ), Center( child: FlatButton( + key: Key("alreadyHaveAnAccountButton"), child: Text( I18n.tr(context).alreadyHaveAnAccount, style: TextStyle( diff --git a/test/login_test.dart b/test/login_test.dart index 8a1ada5d..0d02f35b 100644 --- a/test/login_test.dart +++ b/test/login_test.dart @@ -1,3 +1,5 @@ +import 'package:fluffychat/utils/app_route.dart'; +import 'package:fluffychat/views/chat_list.dart'; import 'package:fluffychat/views/login.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -29,6 +31,11 @@ void main() { expect( find.byKey(Key("passwordField")), findsOneWidget); // Password Input expect(find.byKey(Key("loginButton")), findsOneWidget); // Login Button + + /*await Utils.tapItem(tester, Key("loginButton")); + // FIXME Use better way + await tester.pump(Duration(seconds: 5)); + expect(isPushed, isTrue);*/ }); }); }); diff --git a/test/sign_up_test.dart b/test/sign_up_test.dart new file mode 100644 index 00000000..4f748865 --- /dev/null +++ b/test/sign_up_test.dart @@ -0,0 +1,40 @@ +import 'package:fluffychat/views/sign_up.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'utils.dart'; + +void main() { + /// All Tests related to the Login + group("SignUpPage", () { + /// Check if all Elements get created + testWidgets('should get created', (WidgetTester tester) async { + await tester.runAsync(() async { + final TestObserver observer = TestObserver() + ..onPushed = (Route route, Route previousRoute) {} + ..onPopped = (Route route, Route previousRoute) {}; + + await tester.pumpWidget( + Utils.getWidgetWrapper( + SignUp(), + observer, + ), + ); + + await tester.pump(Duration.zero); + + expect(find.byKey(Key("serverField")), findsOneWidget); // Server field + expect( + find.byKey(Key("usernameField")), findsOneWidget); // Username Input + expect(find.byKey(Key("signUpButton")), findsOneWidget); // Login Button + expect(find.byKey(Key("alreadyHaveAnAccountButton")), + findsOneWidget); // alreadyHaveAnAccount Button + + /*await Utils.tapItem(tester, Key("loginButton")); + // FIXME Use better way + await tester.pump(Duration(seconds: 5)); + expect(isPushed, isTrue);*/ + }); + }); + }); +} diff --git a/test/utils.dart b/test/utils.dart index dae8f0b0..5caeb824 100644 --- a/test/utils.dart +++ b/test/utils.dart @@ -11,6 +11,18 @@ class Utils { debugPrint(tester.allWidgets.toList().join("\n").toString()); } + static bool isWidgetInWidgets(WidgetTester tester, Type widget) { + debugPrint(tester.allWidgets + .toList() + .map((e) => e.runtimeType) + .join("\n") + .toString()); + return tester.allWidgets + .toList() + .map((e) => e.runtimeType) + .contains(widget); + } + static Client get defaultClient { Client client = Client("testclient", debug: true); client.httpClient = FakeMatrixApi();