-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #47 from fga-eps-mds/qa/shared
[TEST] Realização de testes (shared) (fga-eps-mds/2024.2-ARANDU-DOC#59)
- Loading branch information
Showing
5 changed files
with
196 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import 'package:flutter/material.dart'; | ||
import 'package:flutter_test/flutter_test.dart'; | ||
import 'package:aranduapp/ui/shared/ErrorPopUp.dart'; | ||
|
||
void main() { | ||
testWidgets('Testa ErrorPopUp', (WidgetTester tester) async { | ||
await tester.pumpWidget( | ||
const MaterialApp( | ||
home: Scaffold( | ||
body: ErrorPopUp( | ||
content: Text('Este é um erro'), | ||
), | ||
), | ||
), | ||
); | ||
|
||
// Verificar se o ícone de erro está presente | ||
expect(find.byIcon(Icons.error), findsOneWidget); | ||
|
||
// Verificar se o conteúdo do popup está correto | ||
expect(find.text('Este é um erro'), findsOneWidget); | ||
|
||
// Verificar se o botão 'OK' está presente | ||
expect(find.text('OK'), findsOneWidget); | ||
|
||
// Tocar no botão OK | ||
await tester.tap(find.text('OK')); | ||
|
||
// Rebuild após o tap para processar a navegação | ||
await tester.pumpAndSettle(); | ||
|
||
expect(find.text('OK'), findsNothing); // O popup desapareceu | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
import 'package:aranduapp/ui/shared/TextEmail.dart'; | ||
import 'package:flutter/material.dart'; | ||
import 'package:flutter_test/flutter_test.dart'; | ||
|
||
void main() { | ||
testWidgets('Testa se Email é válido ou inválido', | ||
(WidgetTester tester) async { | ||
final controller = TextEditingController(); | ||
|
||
await tester.pumpWidget( | ||
MaterialApp( | ||
home: Scaffold( | ||
body: TextEmail( | ||
padding: const EdgeInsets.all(10), controller: controller), | ||
), | ||
), | ||
); | ||
|
||
final emailField = find.byType(TextFormField); | ||
|
||
// Função auxiliar para validar diferentes entradas de e-mail | ||
Future<void> testEmail(String input, String? expectedError) async { | ||
await tester.enterText(emailField, input); | ||
await tester.pump(); | ||
final validator = | ||
tester.widget<TextFormField>(emailField).validator!(input); | ||
expect(validator, expectedError); | ||
} | ||
|
||
// Teste de validação para diferentes casos | ||
await testEmail("", "E-mail inválido"); // Campo vazio | ||
await testEmail("joaozinhi", "E-mail inválido"); // Sem '@' | ||
await testEmail("joaozinhi@", "E-mail inválido"); // Sem domínio | ||
await testEmail("joao@domain", "E-mail inválido"); // Sem extensão | ||
await testEmail("[email protected]", null); // Entrada válida | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import 'package:aranduapp/ui/shared/TextName.dart'; | ||
import 'package:flutter/material.dart'; | ||
import 'package:flutter_test/flutter_test.dart'; | ||
|
||
void main() { | ||
testWidgets('Testa se o nome é válido', (WidgetTester tester) async { | ||
final controller = TextEditingController(); | ||
|
||
await tester.pumpWidget(MaterialApp( | ||
home: Scaffold( | ||
body: TextName( | ||
controller: controller, | ||
padding: const EdgeInsets.all(10), | ||
), | ||
))); | ||
|
||
final nameField = find.byType(TextFormField); | ||
|
||
// Função auxiliar para validar diferentes entradas de nome | ||
Future<void> testName(String input, String? expectedError) async { | ||
await tester.enterText(nameField, input); | ||
await tester.pump(); | ||
final validator = | ||
tester.widget<TextFormField>(nameField).validator!(input); | ||
expect(validator, expectedError); | ||
} | ||
|
||
// Teste de validação para diferentes casos de nome | ||
await testName("", 'Nome inválido'); // Campo vazio | ||
await testName(" a", 'Nome inválido'); // Nome com menos de 3 caracteres | ||
await testName("Jo", 'Nome inválido'); // Nome com 2 caracteres | ||
await testName("João", null); // Nome válido | ||
await testName("Maria", null); // Outro nome válido | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
import 'package:flutter/material.dart'; | ||
import 'package:flutter_test/flutter_test.dart'; | ||
import 'package:aranduapp/ui/shared/TextPassword.dart'; | ||
|
||
void main() { | ||
// Testa a validação da senha no widget TextPassWord | ||
testWidgets('Testa se a senha é válida', (WidgetTester tester) async { | ||
final controller = TextEditingController(); | ||
|
||
// Monta o widget de teste com TextPassWord | ||
await tester.pumpWidget( | ||
MaterialApp( | ||
home: Scaffold( | ||
body: TextPassWord( | ||
controller: controller, | ||
padding: const EdgeInsets.all(10), | ||
), | ||
), | ||
), | ||
); | ||
|
||
// Localiza o campo de texto do formulário | ||
final passwordField = find.byType(TextFormField); | ||
|
||
// Função para testar diferentes cenários de validação de senha | ||
Future<void> testPassword(String input, String? expectedError) async { | ||
await tester.enterText(passwordField, input); // Insere texto no campo | ||
await tester.pump(); // Re-renderiza o widget para capturar mudanças | ||
final validator = | ||
tester.widget<TextFormField>(passwordField).validator!(input); | ||
expect(validator, | ||
expectedError); // Verifica se o erro retornado é o esperado | ||
} | ||
|
||
// Testa senhas inválidas, válidas e campo vazio | ||
await testPassword('12345', "Senha inválida"); // Senha muito curta | ||
await testPassword('validPassword123', null); // Senha válida | ||
await testPassword('', 'Senha inválida'); // Campo vazio | ||
}); | ||
|
||
// Testa a funcionalidade de visibilidade da senha | ||
testWidgets('Testa a visibilidade da senha', (WidgetTester tester) async { | ||
final controller = TextEditingController(); | ||
|
||
// Monta o widget de teste com TextPassWord | ||
await tester.pumpWidget( | ||
MaterialApp( | ||
home: Scaffold( | ||
body: TextPassWord( | ||
controller: controller, | ||
padding: const EdgeInsets.all(10), | ||
), | ||
), | ||
), | ||
); | ||
|
||
// Localiza o ícone de visibilidade e o campo de texto | ||
final visibilityIcon = find.byIcon(Icons.visibility_off_outlined); | ||
final textFieldFinder = find.byType(TextField); | ||
|
||
// Verifica se o ícone inicial de visibilidade está presente | ||
expect(visibilityIcon, findsOneWidget); | ||
|
||
// Verifica o estado inicial de obscureText (deve ser verdadeiro) | ||
TextField textField = tester.widget<TextField>(textFieldFinder); | ||
expect(textField.obscureText, true); | ||
|
||
// Simula o clique no ícone para alterar a visibilidade da senha | ||
await tester.tap(visibilityIcon); | ||
await tester.pump(); | ||
|
||
// Verifica se o ícone foi alterado para o estado visível | ||
expect(find.byIcon(Icons.visibility_outlined), findsOneWidget); | ||
|
||
// Verifica se obscureText agora é falso | ||
textField = tester.widget<TextField>(textFieldFinder); | ||
expect(textField.obscureText, false); | ||
|
||
// Simula outro clique para voltar a ocultar a senha | ||
await tester.tap(find.byIcon(Icons.visibility_outlined)); | ||
await tester.pump(); | ||
|
||
// Verifica se o ícone voltou para o estado inicial | ||
expect(find.byIcon(Icons.visibility_off_outlined), findsOneWidget); | ||
|
||
// Verifica novamente se obscureText é verdadeiro | ||
textField = tester.widget<TextField>(textFieldFinder); | ||
expect(textField.obscureText, true); | ||
}); | ||
} |
This file was deleted.
Oops, something went wrong.