diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart index 1a819b0d..9ec4725b 100644 --- a/integration_test/app_test.dart +++ b/integration_test/app_test.dart @@ -48,16 +48,16 @@ void main() { // WelcomeTest.signInToSignUp(); // WelcomeTest.signUpToSignIn(); - // AuthenticationTest.signIn(); - AuthenticationTest.signUp(); + AuthenticationTest.signIn(); + // AuthenticationTest.signUp(); // AuthenticationTest.signOut(); // - // ModularizationTest.switchLicense(); + ModularizationTest.switchLicense(); // ModularizationTest.containLicense(); // - // MenuTest.navToEntries(); - // MenuTest.containEntries(); - // MenuTest.labels2AppbarConsistency(); + MenuTest.navToEntries(); + MenuTest.containEntries(); + MenuTest.labels2AppbarConsistency(); // // LocalsTest.setLocal(); // LocalsTest.unlinkLocal(); diff --git a/integration_test/auth_test.dart b/integration_test/auth_test.dart index e46c5d6f..03a0a620 100644 --- a/integration_test/auth_test.dart +++ b/integration_test/auth_test.dart @@ -177,7 +177,7 @@ class AuthenticationTest { $.tester.printToConsole( 'Authentication Test - Sign-Out: Deslogar da Conta'); - await _logged(); + await _loggedWithMultiLocalsAccount(); await $.pumpWidget(const App()); await $.waitUntilVisible($(MenuStaggeredView)); @@ -226,6 +226,7 @@ Future _submit( await $(ValueKey(key)) // .waitUntilVisible() .tap(); + await $.pump(Duration(milliseconds: 1000)); if ($(ValueKey('ThrowExceptionWidget')).exists) { // expect(throwsException, findsOneWidget); await $(ValueKey('ThrowExceptionWidget')) // diff --git a/integration_test/locals_test.dart b/integration_test/locals_test.dart index 5a6af1c2..e2e605c9 100644 --- a/integration_test/locals_test.dart +++ b/integration_test/locals_test.dart @@ -2,13 +2,57 @@ part of 'app_test.dart'; class LocalsTest { static Future setLocal() async { + // patrolWidgetTest( + // 'Selecionar um local disponível com multiplos locais disponiveis', // + // (PatrolTester tester) async { + // $ = tester; + // $.tester.printToConsole('Locals Test - Selecionar um local disponível'); + // + // await _loggedWithMultiLocalsAccount(false); + // await $.pumpWidgetAndSettle(const App()); + // await $.waitUntilVisible($(MenuStaggeredView)); + // await $.waitUntilVisible($(LocalProfileComponentWidget)); + // + // final PatrolFinder profileFinder = + // $(#AsyncLocalProfileComponentWidget_InkWell); + // expect(profileFinder, findsOneWidget); + // + // await $(profileFinder) // + // .waitUntilVisible() + // .tap(); + // + // final PatrolFinder bottomSheetFinder = + // await $(BottomArrowLinkedLocalsComponentWidget) // + // .waitUntilVisible(); + // expect(bottomSheetFinder, findsOneWidget); + // + // final PatrolFinder listViewFinder = await $(bottomSheetFinder) // + // .$(ListView) + // .waitUntilVisible(); + // expect(listViewFinder, findsOneWidget); + // + // await $.pump(const Duration(milliseconds: 500)); + // + // final PatrolFinder entriesFinder = await $(listViewFinder) // + // .$(CardItemTemplateComponentWidget) + // .waitUntilVisible(); + // expect(entriesFinder, findsWidgets); + // + // if (entriesFinder.evaluate().isNotEmpty) { + // await $(entriesFinder.first) // + // .waitUntilVisible() + // .tap(); + // await $.pumpAndSettle(); + // } + // }, + // ); patrolWidgetTest( - 'Selecionar um local disponível', // + 'Selecionar um local disponível com somente um local disponivel', // (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Locals Test - Selecionar um local disponível'); - await _logged(false); + await _loggedWithSomeoneLocalAccount(false); await $.pumpWidgetAndSettle(const App()); await $.waitUntilVisible($(MenuStaggeredView)); await $.waitUntilVisible($(LocalProfileComponentWidget)); @@ -20,41 +64,134 @@ class LocalsTest { await $(profileFinder) // .waitUntilVisible() .tap(); - - final PatrolFinder bottomSheetFinder = - await $(BottomArrowLinkedLocalsComponentWidget) // - .waitUntilVisible(); - expect(bottomSheetFinder, findsOneWidget); - - final PatrolFinder listViewFinder = await $(bottomSheetFinder) // - .$(ListView) - .waitUntilVisible(); - expect(listViewFinder, findsOneWidget); - - await $.pump(const Duration(milliseconds: 500)); - - final PatrolFinder entriesFinder = await $(listViewFinder) // - .$(CardItemTemplateComponentWidget) - .waitUntilVisible(); - expect(entriesFinder, findsWidgets); - - if (entriesFinder.evaluate().isNotEmpty) { - await $(entriesFinder.first) // - .waitUntilVisible() - .tap(); - await $.pumpAndSettle(); - } }, ); } static Future unlinkLocal() async { - patrolWidgetTest('Desvincular do local selecionado', // + // patrolWidgetTest( + // 'Desvincular do local selecionado com multiplos locais disponiveis', // + // (PatrolTester tester) async { + // $ = tester; + // $.tester.printToConsole( + // 'Locals Test - Desvincular do local selecionado com multiplos locais disponiveis'); + // + // await _loggedWithMultiLocalsAccount(); + // await $.pumpWidgetAndSettle(const App()); + // await $.waitUntilVisible($(MenuStaggeredView)); + // + // final PatrolFinder gridView = await $(GridView) // + // .waitUntilVisible(); + // final PatrolFinder entries = await $(gridView) + // .$(ButtonMenuItem) // + // .waitUntilVisible(); + // + // await $.pumpAndSettle(); + // expect(entries, findsWidgets); + // final PatrolFinder settings = await $(gridView) // + // .$(Icons.settings) + // .waitUntilVisible(); + // expect(settings, findsOneWidget); + // + // await $(settings).tap(); + // + // final PatrolFinder unlinkButton = await $(Symbols.digital_out_of_home) // + // .waitUntilVisible(); + // expect(unlinkButton, findsOneWidget); + // await $(unlinkButton) // + // .waitUntilVisible() + // .tap(); + // + // final PatrolFinder alertDialog = await $(#AlertDialogKey) // + // .waitUntilVisible(); + // await alertDialog + // .$(#AcceptOptionKey) // + // .waitUntilVisible() + // .tap(settlePolicy: SettlePolicy.noSettle); + // + // await $.pump(); + // await $.pump(const Duration(seconds: 1)); + // await $.pump(); + // + // final PatrolFinder bottomSheetFinder = + // await $(BottomArrowLinkedLocalsComponentWidget) // + // .waitUntilVisible(); + // + // expect(bottomSheetFinder, findsOneWidget); + // + // final PatrolFinder listViewFinder = await $(bottomSheetFinder) // + // .$(ListView) + // .waitUntilVisible(); + // + // expect(listViewFinder, findsOneWidget); + // + // final PatrolFinder entriesFinder = await $(listViewFinder) + // .$(CardItemTemplateComponentWidget) + // .waitUntilVisible(); + // + // expect(entriesFinder, findsWidgets); + // }); + // + // patrolWidgetTest( + // 'Vincular um local desvinculado com multiplos locais disponiveis', // + // (PatrolTester tester) async { + // $ = tester; + // $.tester.printToConsole('Locals Test - Vincular um local desvinculado'); + // + // await _loggedWithMultiLocalsAccount(false); + // await $.pumpWidget(const App()); + // + // final PatrolFinder bottomSheetFinder = + // await $(BottomArrowLinkedLocalsComponentWidget) // + // .waitUntilVisible(); + // expect(bottomSheetFinder, findsOneWidget); + // + // await $.pump(const Duration(milliseconds: 500)); + // + // final PatrolFinder listViewFinder = $(bottomSheetFinder) // + // .$(ListView); + // expect(listViewFinder, findsOneWidget); + // + // await $.pump(const Duration(milliseconds: 500)); + // + // final PatrolFinder entriesFinder = $(listViewFinder) // + // .$(CardItemTemplateComponentWidget); + // expect(entriesFinder, findsWidgets); + // + // if (entriesFinder.evaluate().isNotEmpty) { + // await $(entriesFinder.first).waitUntilVisible().tap(); + // + // final PatrolFinder alertDialog = await $(#AlertDialogKey) // + // .waitUntilVisible(); + // await alertDialog + // .$(#AcceptOptionKey) // + // .waitUntilVisible() + // .tap(settlePolicy: SettlePolicy.noSettle); + // } + // + // await Future.delayed(const Duration(milliseconds: 500)); + // + // // try { + // // await $.pumpAndSettle( + // // duration: const Duration(seconds: 2), + // // phase: EnginePhase.sendSemanticsUpdate, + // // timeout: const Duration(seconds: 2), + // // ); + // // throw Exception('Local está vinculado'); + // // } catch (e) { + // // await Future.delayed(const Duration(milliseconds: 500)); + // // return; + // // } + // }, + // ); + patrolWidgetTest( + 'Desvincular do local selecionado com somente um local disponivel', // (PatrolTester tester) async { $ = tester; - $.tester.printToConsole('Locals Test - Desvincular do local selecionado'); + $.tester.printToConsole( + 'Locals Test - Desvincular do local selecionado com multiplos locais disponiveis'); - await _logged(); + await _loggedWithSomeoneLocalAccount(); await $.pumpWidgetAndSettle(const App()); await $.waitUntilVisible($(MenuStaggeredView)); @@ -111,12 +248,12 @@ class LocalsTest { }); patrolWidgetTest( - 'Vincular um local desvinculado', // + 'Vincular um local desvinculado com somente um local disponivel', // (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Locals Test - Vincular um local desvinculado'); - await _logged(false); + await _loggedWithSomeoneLocalAccount(false); await $.pumpWidget(const App()); final PatrolFinder bottomSheetFinder = @@ -166,10 +303,45 @@ class LocalsTest { static Future attachLocal() async { patrolWidgetTest( - 'Selecionar um local disponível', // + 'Selecionar um local disponível com multíplos locais disponíveis', // (PatrolTester tester) async { $ = tester; - await _logged(); + await _loggedWithMultiLocalsAccount(); + await $.pumpWidget(const App()); + late Map credentials; + final PatrolFinder throwsException = $(''); + + 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 $.pumpWidget(const App()); + await _navigateToSignUp($); + await _auth(credentials, $, throwsException); + credentials = { + 'emailTextFormField': email, + 'passwordTextFormField': password + }; + await _auth(credentials, $, throwsException); + + await $.pumpAndSettle(); + await StorageHelper() // + .set(ProfileStorageKey.clientUUID.key, '7'); + await $.pumpAndSettle(); + await Future.delayed(const Duration(milliseconds: 500)); + return; + }, + ); + patrolWidgetTest( + 'Selecionar um local disponível com somente um local disponível', // + (PatrolTester tester) async { + $ = tester; + await _loggedWithSomeoneLocalAccount(); await $.pumpWidget(const App()); late Map credentials; final PatrolFinder throwsException = $(''); diff --git a/integration_test/menu_test.dart b/integration_test/menu_test.dart index 519b42b1..10b0ab62 100644 --- a/integration_test/menu_test.dart +++ b/integration_test/menu_test.dart @@ -3,13 +3,14 @@ part of 'app_test.dart'; class MenuTest { static Future labels2AppbarConsistency() async { patrolWidgetTest( - 'As labels dos menuItems correspondem aos títulos das AppBars?', // + 'As labels dos menuItems correspondem aos títulos das AppBars? (MultiLocais)', + // (PatrolTester tester) async { $ = tester; $.tester.printToConsole( 'Menu Test - As labels dos menuItems correspondem aos títulos das AppBars?'); - await _logged(); + await _loggedWithMultiLocalsAccount(); await $.pumpWidgetAndSettle(const App()); await $.waitUntilVisible($(MenuStaggeredView)); @@ -96,12 +97,51 @@ class MenuTest { static Future containEntries() async { patrolWidgetTest( - 'HomeMenu contém seus itens?', // + 'HomeMenu contém seus itens? (MultiLocais)', // (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Menu Test - HomeMenu contém seus itens?'); - await _logged(); + await _loggedWithMultiLocalsAccount(); + await $.pumpWidgetAndSettle(const App()); + + await $.waitUntilVisible($(MenuStaggeredView)); + await $.waitUntilVisible($(GridView)); + final PatrolFinder gridEntries = await $(GridView) // + .$(ButtonMenuItem) + .waitUntilVisible(); + expect(gridEntries, findsWidgets); + + final List menuKeys = gridEntries + .evaluate() + .map((element) { + final key = element.widget.key; + if (key is ValueKey) { + return key.value; + } + return null; + }) + .where((key) => key != null) + .toList(); + + await $.pumpAndSettle(); + final List entries = MenuEntry.entries; + await $.pumpAndSettle(); + final List entriesKey = entries + .where((entry) => entry.types.contains(MenuEntryType.Home)) + .map((entry) => entry.key) + .toList(); + await $.pumpAndSettle(); + expect(entriesKey, containsAll(menuKeys)); + }, + ); + patrolWidgetTest( + 'HomeMenu contém seus itens? (MonoLocal)', // + (PatrolTester tester) async { + $ = tester; + $.tester.printToConsole('Menu Test - HomeMenu contém seus itens?'); + + await _loggedWithSomeoneLocalAccount(); await $.pumpWidgetAndSettle(const App()); await $.waitUntilVisible($(MenuStaggeredView)); @@ -136,12 +176,59 @@ class MenuTest { ); patrolWidgetTest( - 'DrawerMenu contém seus itens?', // + 'DrawerMenu contém seus itens? (MultiLocais)', // (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Menu Test - DrawerMenu contém seus itens?'); - await _logged(); + await _loggedWithMultiLocalsAccount(); + await $.pumpWidgetAndSettle(const App()); + + await $.waitUntilVisible($(MenuStaggeredView)); + await $.waitUntilVisible($(GridView)); + final PatrolFinder gridEntries = await $(GridView) // + .$(ButtonMenuItem) + .waitUntilVisible(); + expect(gridEntries, findsWidgets); + + await $(Icons.menu_rounded).waitUntilVisible().tap(); + await $.waitUntilVisible($(ListView)); + final PatrolFinder listEntries = await $(ListView) // + .$(CardMenuItem) + .waitUntilVisible(); + expect(listEntries, findsWidgets); + + final List menuKeys = listEntries + .evaluate() + .map((element) { + final key = element.widget.key; + if (key is ValueKey) { + return key.value; + } + return null; + }) + .where((key) => key != null) + .toList(); + + await $.pumpAndSettle(); + final List entries = MenuEntry.entries; + await $.pumpAndSettle(); + final List entriesKey = entries + .where((entry) => entry.types.contains(MenuEntryType.Drawer)) + .map((entry) => entry.key) + .toList(); + await $.pumpAndSettle(); + expect(entriesKey, containsAll(menuKeys)); + await Future.delayed(const Duration(milliseconds: 500)); + }, + ); + patrolWidgetTest( + 'DrawerMenu contém seus itens? (MonoLocal)', // + (PatrolTester tester) async { + $ = tester; + $.tester.printToConsole('Menu Test - DrawerMenu contém seus itens?'); + + await _loggedWithSomeoneLocalAccount(); await $.pumpWidgetAndSettle(const App()); await $.waitUntilVisible($(MenuStaggeredView)); @@ -186,12 +273,12 @@ class MenuTest { static Future navToEntries() async { patrolWidgetTest( - 'Navegação entre items do Menu', + 'Navegação entre items do Menu (MultiLocais)', (PatrolTester tester) async { $ = tester; $.tester.printToConsole('Menu Test - Navegação entre items do Menu'); - await _logged(); + await _loggedWithMultiLocalsAccount(); await $.pumpWidgetAndSettle(const App()); await $.waitUntilVisible($(MenuStaggeredView)); diff --git a/integration_test/module_test.dart b/integration_test/module_test.dart index da64d461..6377e474 100644 --- a/integration_test/module_test.dart +++ b/integration_test/module_test.dart @@ -2,13 +2,40 @@ part of 'app_test.dart'; class ModularizationTest { static Future containLicense() async { - patrolWidgetTest('Os modulos de licença está sendo processados?', + patrolWidgetTest( + 'Os modulos de licença está sendo processados? (MultiLocais)', (PatrolTester tester) async { $ = tester; $.tester.printToConsole( 'Modularization Test - Os modulos de licença está sendo processados?'); - await _logged(); + await _loggedWithMultiLocalsAccount(); + await $.pumpWidgetAndSettle(const App()); + await $.waitUntilVisible($(MenuStaggeredView)); + + final LicenseRepository licenseRepository = LicenseRepositoryImpl(); + final List result = await licenseRepository.getLicense(); + expect(result, isNotEmpty); + + await $.pumpAndSettle(); + + final List entries = MenuEntry.entries; + final List entriesKey = entries + .where((entry) => entry.types.contains(MenuEntryType.Home)) + .map((entry) => '{key: ${entry.key}}') + .toList(); + expect(result, containsAll(entriesKey)); + + return; + }); + patrolWidgetTest( + 'Os modulos de licença está sendo processados? (MonoLocal)', + (PatrolTester tester) async { + $ = tester; + $.tester.printToConsole( + 'Modularization Test - Os modulos de licença está sendo processados?'); + + await _loggedWithSomeoneLocalAccount(); await $.pumpWidgetAndSettle(const App()); await $.waitUntilVisible($(MenuStaggeredView)); @@ -36,7 +63,7 @@ class ModularizationTest { $ = tester; $.tester.printToConsole('Licença está sendo atualizada?'); - await _logged(); + await _loggedWithMultiLocalsAccount(); await $.pumpWidgetAndSettle(const App()); await $.waitUntilVisible($(MenuStaggeredView)); diff --git a/integration_test/utils_test.dart b/integration_test/utils_test.dart index dcacca4b..144aa4ad 100644 --- a/integration_test/utils_test.dart +++ b/integration_test/utils_test.dart @@ -1,6 +1,7 @@ part of 'app_test.dart'; -Future _logged([bool forceLinkedLocal = true]) async { +Future _loggedWithMultiLocalsAccount( + [bool forceLinkedLocal = true]) async { await initializeApp(); await StorageHelper() // .set(SecureStorageKey.isLogged.value, 'true'); @@ -14,7 +15,36 @@ Future _logged([bool forceLinkedLocal = true]) async { await StorageHelper() // .set(SecureStorageKey.email.value, 'email_app@exemplo.com'); await StorageHelper() // - .set(SecureStorageKey.password.value, '123456'); + .set(SecureStorageKey.password.value, '12345678'); + await StorageHelper() // + .set(LocalsStorageKey.isNewVersion.key, true); + if (forceLinkedLocal == true) { + await StorageHelper() // + .set(ProfileStorageKey.clientUUID.key, '7'); + await PhpGroup // + .resopndeVinculo + .call(tarefa: 'A'); + await LicenseRepositoryImpl() // + .resetLicense(); + } +} + +Future _loggedWithSomeoneLocalAccount( + [bool forceLinkedLocal = true]) async { + await initializeApp(); + await StorageHelper() // + .set(SecureStorageKey.isLogged.value, 'true'); + await StorageHelper() // + .set(SecureStorageKey.haveLocal.value, 'true'); + await StorageHelper() // + .set(ProfileStorageKey.devUUID.key, 'ca838e17f4139268'); + await StorageHelper() // + .set(ProfileStorageKey.userUUID.key, '678aa05b0c2154.50583237'); + + await StorageHelper() // + .set(SecureStorageKey.email.value, 'local_teste8@exemplo.com'); + await StorageHelper() // + .set(SecureStorageKey.password.value, '12345678'); await StorageHelper() // .set(LocalsStorageKey.isNewVersion.key, true); if (forceLinkedLocal == true) {