0
respostas

[Sugestão] Código do Desafio - Aula 03 - Atividade 04

Sobre os desafios propostos, seguem sugestões de solução:

Teste do Widget IconPicker:

testWidgets(
    "Open alert dialog of icon picker, that contais an icon of a heart (favorite) and text 'Escolha um ícone'",
    (tester) async {
      await tester.pumpWidget(MaterialApp(
        home: Builder(
          builder: (context) => TextButton(
              onPressed: () => showIconPicker(context: context),
              child: const Text("Selecionar icone")),
        ),
      ));

      Finder menuClientsTypesFinder = find.text('Selecionar icone');

      await tester.tap(menuClientsTypesFinder);
      await tester.pumpAndSettle();

      expect(find.byType(AlertDialog), findsOneWidget);

      final Finder txtChooseIcon = find.text('Escolha um ícone');
      final Finder iconFavoriteFinder = find.byIcon(Icons.favorite);

      expect([txtChooseIcon, iconFavoriteFinder],
          [findsOneWidget, findsOneWidget]);
    },
  );

Para testar o botão Sair, localizado no menu (Drawer):

 testWidgets(
        "Hamburger menu should have text 'Sair' and on tap, close app.",
        (tester) async {
          await tester.pumpWidget(const MaterialApp(
            home: HamburgerMenu(),
          ));

          expect(find.text('Sair'), findsOneWidget);

          //await tester.tap(find.text("Sair")); // Descomentar somente para testar o funcionamento, contudo invalida o teste por encerrar o app.
        },
      );

Por fim, o teste de exclusão do novo cliente cadastrado:

        //Verifica se está na tela de Clientes cadastrados.
      expect(find.text("Clientes"), findsOneWidget);

        //Busca o cliente cadastrado pelo nome
      Finder txtNewClienteFinder = find.textContaining(clientName);	
      expect(txtNewClienteFinder, findsOneWidget);

        //Realiza a exclusão do cliente
      await tester.drag(txtNewClienteFinder, const Offset(500, 0));
      await tester.pumpAndSettle();
      
        //Verifica a exclusão
      txtNewClienteFinder = find.textContaining(clientName);
      expect(txtNewClienteFinder, findsNothing);