initial commit 2
This commit is contained in:
98
test/widget_test.dart
Normal file
98
test/widget_test.dart
Normal file
@@ -0,0 +1,98 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
import 'package:flutter_application_1/main.dart';
|
||||
import 'package:flutter_application_1/models/address_entry.dart';
|
||||
import 'package:flutter_application_1/models/address_record.dart';
|
||||
import 'package:flutter_application_1/models/auth_session.dart';
|
||||
import 'package:flutter_application_1/services/address_repository.dart';
|
||||
import 'package:flutter_application_1/services/auth_repository.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Muestra login, pasa a dirección y abre el tablero', (WidgetTester tester) async {
|
||||
final authRepository = FakeAuthRepository();
|
||||
final addressRepository = FakeAddressRepository();
|
||||
|
||||
await tester.pumpWidget(
|
||||
MyApp(
|
||||
authRepository: authRepository,
|
||||
addressRepository: addressRepository,
|
||||
enableLiveFeatures: false,
|
||||
),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(find.text('Bienvenido'), findsOneWidget);
|
||||
expect(find.text('Entrar'), findsOneWidget);
|
||||
expect(find.text('Crear cuenta'), findsOneWidget);
|
||||
|
||||
await tester.enterText(find.byType(TextFormField).at(0), 'demo@correo.com');
|
||||
await tester.enterText(find.byType(TextFormField).at(1), '123456');
|
||||
await tester.tap(find.text('Ingresar'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(find.text('Dirección'), findsOneWidget);
|
||||
expect(find.text('Guardar dirección'), findsOneWidget);
|
||||
|
||||
await tester.enterText(find.byType(TextFormField).at(0), '12A');
|
||||
await tester.enterText(find.byType(TextFormField).at(1), 'Centro');
|
||||
await tester.enterText(find.byType(TextFormField).at(2), 'Reforma');
|
||||
await tester.tap(find.text('Guardar dirección'));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 2));
|
||||
|
||||
expect(addressRepository.savedAddress, isNotNull);
|
||||
expect(find.byType(NavigationBar), findsOneWidget);
|
||||
expect(find.text('Mapa'), findsOneWidget);
|
||||
expect(find.text('Calendario'), findsOneWidget);
|
||||
expect(find.text('Avisos'), findsOneWidget);
|
||||
expect(find.text('Datos'), findsOneWidget);
|
||||
});
|
||||
}
|
||||
|
||||
class FakeAuthRepository implements AuthRepository {
|
||||
AuthSession? _session;
|
||||
|
||||
@override
|
||||
Future<AuthSession?> restoreSession() async => _session;
|
||||
|
||||
@override
|
||||
Future<AuthSession> signIn({required String email, required String password}) async {
|
||||
_session = AuthSession(token: 'token-login', email: email, displayName: 'Usuario');
|
||||
return _session!;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<AuthSession> signUp({required String name, required String email, required String password}) async {
|
||||
_session = AuthSession(token: 'token-register', email: email, displayName: name);
|
||||
return _session!;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> signOut() async {
|
||||
_session = null;
|
||||
}
|
||||
}
|
||||
|
||||
class FakeAddressRepository implements AddressRepository {
|
||||
AddressEntry? savedAddress;
|
||||
|
||||
@override
|
||||
Future<void> saveAddress({required AuthSession session, required AddressEntry address}) async {
|
||||
savedAddress = address;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<AddressRecord>> getMyAddresses({required AuthSession session}) async {
|
||||
return savedAddress == null
|
||||
? <AddressRecord>[]
|
||||
: <AddressRecord>[
|
||||
AddressRecord(
|
||||
id: 1,
|
||||
houseNumber: savedAddress!.houseNumber,
|
||||
colonia: savedAddress!.colonia,
|
||||
street: savedAddress!.street,
|
||||
),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user