NUEVA GESTIÓN DE USUARIOS Y PARTIDAS

This commit is contained in:
2026-05-09 16:23:55 +02:00
parent f64f36b78f
commit a5d24c2721
11 changed files with 606 additions and 81 deletions

View File

@@ -140,6 +140,44 @@ void main() {
expect(sala.usuarios['helena']?.estaDisponible, isTrue);
});
test('registra actividad y conserva usuarios seleccionados en partida al desconectar', () {
sala.registrarCliente(
const ClienteSala(
clientId: 'cliente-sofia',
endpointId: 'endpoint-2',
nombre: 'Sofía',
),
);
sala
..crearUsuario(Usuario(id: 'ana', nombre: 'Ana'))
..crearUsuario(Usuario(id: 'sofia', nombre: 'Sofía'))
..crearUsuario(Usuario(id: 'helena', nombre: 'Helena'))
..seleccionarUsuario(usuarioId: 'ana', clienteId: 'host')
..seleccionarUsuario(usuarioId: 'sofia', clienteId: 'cliente-sofia')
..seleccionarUsuario(usuarioId: 'helena', clienteId: 'cliente-sofia');
sala.registrarActividadCliente('cliente-sofia', ahoraMs: 1234);
expect(sala.clientes['cliente-sofia']?.conectado, isTrue);
expect(sala.clientes['cliente-sofia']?.ultimaActividadMs, 1234);
sala.iniciarPartida();
sala.desconectarCliente('cliente-sofia');
expect(sala.clientes['cliente-sofia']?.conectado, isFalse);
expect(sala.usuarios['sofia']?.clienteIdSeleccionado, 'cliente-sofia');
expect(sala.usuarios['helena']?.clienteIdSeleccionado, 'cliente-sofia');
expect(sala.usuariosDeClientesDesconectados.length, 2);
final reasignados = sala.reasignarUsuariosDeCliente(
clientIdOrigen: 'cliente-sofia',
clientIdDestino: 'host',
);
expect(reasignados, 2);
expect(sala.usuarios['sofia']?.clienteIdSeleccionado, 'host');
expect(sala.usuarios['helena']?.clienteIdSeleccionado, 'host');
});
test('serializa y restaura clientes y usuarios seleccionados', () {
sala
..crearUsuario(Usuario(id: 'ana', nombre: 'Ana'))

View File

@@ -0,0 +1,34 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:farolero/modelos/jugador.dart';
import 'package:farolero/modelos/snapshot_partida_online.dart';
import 'package:farolero/servicios/servicio_historial_partidas.dart';
void main() {
test('crea resumen de historial desde snapshot online final', () {
final snapshot = SnapshotPartidaOnline(
roomId: 'room-1',
fase: 'finPartida',
ronda: 2,
categoria: 'animales',
palabraSecreta: 'León',
ganador: 'jugadores',
jugadores: [
Jugador(id: 'j1', nombre: 'Ana'),
Jugador(id: 'j2', nombre: 'Bruno', esImpostor: true),
Jugador(id: 'j3', nombre: 'Clara'),
],
impostores: ['Bruno'],
);
final guardado = ResultadoPartidaGuardado.desdeSnapshotOnline(snapshot);
expect(guardado.id, 'online-room-1');
expect(guardado.modoMultimovil, isTrue);
expect(guardado.jugadores, 3);
expect(guardado.impostores, 1);
expect(guardado.rondas, 2);
expect(guardado.ganador, 'jugadores');
expect(guardado.palabra, 'León');
expect(guardado.categoria, 'animales');
});
}