flutter-freaccess-hub/integration_test/locals_test.dart

172 lines
5.2 KiB
Dart

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<String, String> 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();
}
}