part of 'app_test.dart'; class LocalsTest { static Future setLocal() async { _setUpLogged(); testWidgets('Selecionar um local disponível', // (WidgetTester tester) async { await tester.pumpWidget(const App()); await tester.pumpAndSettle(); final Finder profileFinder = find.byKey(const Key('AsyncLocalProfileComponentWidget_InkWell')); expect(profileFinder, findsOneWidget); await tester.tap(profileFinder); await tester.pump(const Duration(seconds: 1)); final Finder bottomSheetFinder = find.byType(BottomArrowLinkedLocalsComponentWidget); expect(bottomSheetFinder, findsOneWidget); await tester.ensureVisible(bottomSheetFinder); await tester.pump(const Duration(seconds: 1)); final Finder listViewFinder = find.descendant( of: bottomSheetFinder, matching: find.byType(ListView), ); expect(listViewFinder, findsOneWidget); await tester.ensureVisible(listViewFinder); await tester.pump(const Duration(seconds: 1)); final Finder entriesFinder = find.descendant( of: listViewFinder, matching: find.byType(CardItemTemplateComponentWidget), ); expect(entriesFinder, findsWidgets); if (entriesFinder.evaluate().isNotEmpty) { await tester.ensureVisible(entriesFinder.first); await tester.tap(entriesFinder.first); await tester.pumpAndSettle(); } await Future.delayed(const Duration(milliseconds: 500)); return; }); _tearDown(); } static Future unlinkLocal() async { _setUpAllLogged(); testWidgets('Desvincular do local selecionado', // (WidgetTester tester) async { await tester.pumpWidget(const App()); await tester.pumpAndSettle(); await tester.pump(const Duration(seconds: 1)); final Finder gridView = find.byType(GridView); await tester.ensureVisible(gridView); final Finder entries = find.descendant( of: gridView, matching: find.byType(ButtonMenuItem), ); await tester.pumpAndSettle(); expect(entries, findsWidgets); final Finder settings = find.descendant( of: gridView, matching: find.byIcon(Icons.settings), ); expect(settings, findsOneWidget); await tester.ensureVisible(settings); await tester.tap(settings); await tester.pumpAndSettle(); final Finder unlinkButton = find.byIcon(Symbols.digital_out_of_home); expect(unlinkButton, findsOneWidget); await tester.ensureVisible(unlinkButton); await tester.tap(unlinkButton); await tester.pumpAndSettle(); await tester.tap(find.text('Sim')); await tester.pump(); await tester.pump(const Duration(seconds: 1)); await tester.pump(); final Finder bottomSheetFinder = find.byType(BottomArrowLinkedLocalsComponentWidget); await tester.pump(const Duration(seconds: 1)); expect(bottomSheetFinder, findsOneWidget); await tester.pump(const Duration(seconds: 1)); await tester.ensureVisible(bottomSheetFinder); await tester.pump(const Duration(seconds: 1)); final Finder listViewFinder = find.descendant( of: bottomSheetFinder, matching: find.byType(ListView), ); expect(listViewFinder, findsOneWidget); await tester.ensureVisible(listViewFinder); await tester.pump(const Duration(seconds: 1)); final Finder entriesFinder = find.descendant( of: listViewFinder, matching: find.byType(CardItemTemplateComponentWidget), ); expect(entriesFinder, findsWidgets); await Future.delayed(const Duration(milliseconds: 500)); return; }); testWidgets('Desvincular de um local já desvinculado', // (WidgetTester tester) async { await tester.pumpWidget(const App()); try { await tester.pumpAndSettle( const Duration(seconds: 2), EnginePhase.sendSemanticsUpdate, const Duration(seconds: 2), ); throw Exception('Local está vinculado'); } catch (e) { await Future.delayed(const Duration(milliseconds: 500)); return; } }); _tearDownAll(); } static Future attachLocal() async { _setUpAllLogged(); testWidgets('Selecionar um local disponível', // (WidgetTester tester) async { await tester.pumpWidget(const App()); late Map credentials; var name = ff.randomString(7, 7, true, true, true); var email = '$name@example.com'; var password = '12345678'; credentials = { 'nameTextFormField': name, 'emailTextFormField': email, 'passwordTextFormField': password }; await tester.pumpWidget(const App()); await _navigateToSignUp(tester); await _auth(credentials, tester); credentials = { 'emailTextFormField': email, 'passwordTextFormField': password }; await _auth(credentials, tester); await tester.pumpAndSettle(); await StorageHelper() // .set(ProfileStorageKey.clientUUID.key, '7'); await tester.pumpAndSettle(); await Future.delayed(const Duration(milliseconds: 500)); return; }); _tearDownAll(); } }