From aafa3b6998c5abe8040c2d4380d7d0af3286959c Mon Sep 17 00:00:00 2001 From: TheOneWithTheBraid Date: Sat, 14 Jan 2023 12:25:12 +0100 Subject: [PATCH] chore: add space add room test Signed-off-by: TheOneWithTheBraid --- integration_test/app_test.dart | 57 ++++++++++++++++++- .../extensions/default_flows.dart | 37 ++++++++++++ .../homeserver_picker/homeserver_picker.dart | 10 +++- 3 files changed, 101 insertions(+), 3 deletions(-) diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart index 8007b9a8..3a0a7b56 100644 --- a/integration_test/app_test.dart +++ b/integration_test/app_test.dart @@ -3,6 +3,7 @@ import 'package:fluffychat/pages/chat/chat_view.dart'; import 'package:fluffychat/pages/chat_list/chat_list_body.dart'; import 'package:fluffychat/pages/chat_list/search_title.dart'; import 'package:fluffychat/pages/invitation_selection/invitation_selection_view.dart'; +import 'package:fluffychat/pages/new_group/new_group_view.dart'; import 'package:fluffychat/widgets/m2_popup_menu_button.dart'; import 'package:flutter/material.dart'; @@ -119,7 +120,7 @@ void main() { }, ); - testWidgets('Spaces', (tester) async { + testWidgets('Space Settings', (tester) async { app.main(); await tester.ensureAppStartedHomescreen(); @@ -184,6 +185,60 @@ void main() { expect(find.text(Users.user2.name), findsOneWidget); }); + + testWidgets('Create room', (tester) async { + app.main(); + await tester.ensureAppStartedHomescreen(); + + await tester.waitFor(find.text('New chat')); + await tester.tap(find.text('New chat')); + await tester.pumpAndSettle(); + + await tester.waitFor(find.text('Create new group')); + await tester.tap(find.text('Create new group')); + await tester.pumpAndSettle(); + + await tester.waitFor( + find.descendant( + of: find.byType(NewGroupView), matching: find.byType(TextField)), + ); + await tester.enterText( + find.descendant( + of: find.byType(NewGroupView), matching: find.byType(TextField)), + 'Test Group', + ); + + await Future.delayed(const Duration(milliseconds: 250)); + await tester.testTextInput.receiveAction(TextInputAction.done); + + await tester.inviteContactToGroup(Users.user2.name); + + await tester.tap(find.byIcon(Icons.close_outlined)); + await tester.pumpAndSettle(); + + await tester.tap(find.byTooltip('Back')); + await tester.pumpAndSettle(); + }); + + testWidgets('Add room to space', (tester) async { + app.main(); + await tester.ensureAppStartedHomescreen(); + + await tester.waitFor(find.text('Test Group')); + await tester.longPress(find.text('Test Group')); + await tester.pumpAndSettle(); + + await tester.waitFor(find.byIcon(Icons.workspaces_outlined).first); + await tester.tap(find.byIcon(Icons.workspaces_outlined).first); + await tester.pumpAndSettle(); + + await tester.waitFor(find.text('Test Space')); + await tester.tap(find.text('Test Space')); + await tester.pumpAndSettle(); + + await tester.waitFor(find.maybeUppercaseText('Ok')); + await tester.tap(find.maybeUppercaseText('Ok')); + }); }, ); } diff --git a/integration_test/extensions/default_flows.dart b/integration_test/extensions/default_flows.dart index b61f6aff..235f9b17 100644 --- a/integration_test/extensions/default_flows.dart +++ b/integration_test/extensions/default_flows.dart @@ -2,6 +2,7 @@ import 'dart:developer'; import 'package:fluffychat/pages/chat_list/chat_list_body.dart'; import 'package:fluffychat/pages/homeserver_picker/homeserver_picker.dart'; +import 'package:fluffychat/pages/invitation_selection/invitation_selection_view.dart'; import 'package:fluffychat/pages/settings_account/settings_account_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -138,6 +139,42 @@ extension DefaultFlowExtensions on WidgetTester { } } + Future inviteContactToGroup(String search) async { + final tester= this; + + await tester.waitFor( + find.descendant( + of: find.byType(InvitationSelectionView), + matching: find.byType(TextField)), + ); + await tester.enterText( + find.descendant( + of: find.byType(InvitationSelectionView), + matching: find.byType(TextField)), + search, + ); + + await Future.delayed(const Duration(milliseconds: 250)); + await tester.testTextInput.receiveAction(TextInputAction.done); + + await Future.delayed(const Duration(milliseconds: 1000)); + await tester.pumpAndSettle(); + + await tester.tap(find + .descendant( + of: find.descendant( + of: find.byType(InvitationSelectionView), + matching: find.byType(ListTile), + ), + matching: find.text(search)) + .last); + await tester.pumpAndSettle(); + + await tester.waitFor(find.maybeUppercaseText('Yes')); + await tester.tap(find.maybeUppercaseText('Yes')); + await tester.pumpAndSettle(); + } + Future ensureAppStartedHomescreen({ Duration timeout = const Duration(seconds: 20), }) async { diff --git a/lib/pages/homeserver_picker/homeserver_picker.dart b/lib/pages/homeserver_picker/homeserver_picker.dart index 7e8f47a4..5284ba12 100644 --- a/lib/pages/homeserver_picker/homeserver_picker.dart +++ b/lib/pages/homeserver_picker/homeserver_picker.dart @@ -93,7 +93,10 @@ class HomeserverPickerController extends State { void _loadHomeserverList() async { try { final homeserverList = - await const JoinmatrixOrgParser().fetchHomeservers(); + await Future(() => const JoinmatrixOrgParser().fetchHomeservers()) + .timeout( + const Duration(seconds: 10), + ); final benchmark = await HomeserverListProvider.benchmarkHomeserver( homeserverList, timeout: const Duration(seconds: 10), @@ -104,7 +107,10 @@ class HomeserverPickerController extends State { }); } catch (e, s) { Logs().e('Homeserver benchmark failed', e, s); - benchmarkResults = []; + if (!mounted) return; + setState(() { + benchmarkResults = []; + }); } }