feat(multi-device): host puede participar como jugador
- Añadido modelo Usuario con pool de usuarios sincronizado - El host ahora recibe palabra y rol como cualquier jugador - UI de selección de perfil en pantallas de lobby - Los clientes pueden ver usuarios del servidor o crear nuevos - El juego no inicia hasta que el host selecciona perfil
This commit is contained in:
70
test/servicio_nearby_user_pool_test.dart
Normal file
70
test/servicio_nearby_user_pool_test.dart
Normal file
@@ -0,0 +1,70 @@
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:farolero/modelos/usuario.dart';
|
||||
import 'package:farolero/servicios/servicio_nearby.dart';
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
group('ServicioNearby user pool', () {
|
||||
late ServicioNearby servicio;
|
||||
|
||||
setUp(() {
|
||||
servicio = ServicioNearby();
|
||||
});
|
||||
|
||||
tearDown(() {
|
||||
servicio.dispose();
|
||||
});
|
||||
|
||||
test('should start with empty user pool', () {
|
||||
expect(servicio.usuarios, isEmpty);
|
||||
});
|
||||
|
||||
test('should add user to pool', () {
|
||||
final usuario = Usuario(id: 'user-1', nombre: 'Juan');
|
||||
servicio.agregarUsuario(usuario);
|
||||
|
||||
expect(servicio.usuarios.length, 1);
|
||||
expect(servicio.usuarios.first.nombre, 'Juan');
|
||||
});
|
||||
|
||||
test('should remove user from pool', () {
|
||||
final usuario = Usuario(id: 'user-1', nombre: 'Juan');
|
||||
servicio.agregarUsuario(usuario);
|
||||
expect(servicio.usuarios.length, 1);
|
||||
|
||||
servicio.eliminarUsuario('user-1');
|
||||
expect(servicio.usuarios, isEmpty);
|
||||
});
|
||||
|
||||
test('should synchronize users from list', () {
|
||||
final usuarios = [
|
||||
Usuario(id: 'user-1', nombre: 'Juan'),
|
||||
Usuario(id: 'user-2', nombre: 'Maria'),
|
||||
];
|
||||
servicio.sincronizarUsuarios(usuarios);
|
||||
|
||||
expect(servicio.usuarios.length, 2);
|
||||
expect(servicio.usuarios.map((u) => u.nombre).toList(), contains('Juan'));
|
||||
expect(
|
||||
servicio.usuarios.map((u) => u.nombre).toList(),
|
||||
contains('Maria'),
|
||||
);
|
||||
});
|
||||
|
||||
test('should get usuario by id', () {
|
||||
final usuario = Usuario(id: 'user-1', nombre: 'Juan');
|
||||
servicio.agregarUsuario(usuario);
|
||||
|
||||
final found = servicio.getUsuario('user-1');
|
||||
expect(found, isNotNull);
|
||||
expect(found!.nombre, 'Juan');
|
||||
});
|
||||
|
||||
test('should return null for non-existent user', () {
|
||||
final found = servicio.getUsuario('non-existent');
|
||||
expect(found, isNull);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user