import 'package:flutter_test/flutter_test.dart'; import 'package:farolero/modelos/inicio_partida_multijugador.dart'; void main() { group('InicioPartidaMultijugador', () { test('agrupa varios jugadores controlados por el mismo cliente', () { final asignaciones = [ const AsignacionJugador( jugadorId: 'ana', nombre: 'Ana', clientId: 'host', endpointId: null, ), const AsignacionJugador( jugadorId: 'juan', nombre: 'Juan', clientId: 'host', endpointId: null, ), const AsignacionJugador( jugadorId: 'sofia', nombre: 'Sofía', clientId: 'cliente-sofia', endpointId: 'endpoint-2', ), ]; final impostores = {'juan': true}; final payloads = InicioPartidaMultijugador.crearPayloadsPorCliente( asignaciones: asignaciones, palabraSecreta: 'mate', categoria: 'objetos', impostoresPorJugadorId: impostores, ); expect(payloads['host']?.jugadores.map((j) => j.jugadorId), [ 'ana', 'juan', ]); expect(payloads['host']?.jugadores.first.palabra, 'mate'); expect(payloads['host']?.jugadores.last.esImpostor, isTrue); expect(payloads['host']?.jugadores.last.palabra, isNull); expect(payloads['cliente-sofia']?.endpointId, 'endpoint-2'); expect(payloads['cliente-sofia']?.jugadores.single.nombre, 'Sofía'); }); test('restaura payload completo desde json', () { final payload = InicioPartidaCliente( clientId: 'cliente-sofia', endpointId: 'endpoint-2', categoria: 'todas', jugadores: const [ JugadorInicioPartida( jugadorId: 'sofia', nombre: 'Sofía', esImpostor: false, palabra: 'luna', ), JugadorInicioPartida( jugadorId: 'helena', nombre: 'Helena', esImpostor: true, palabra: null, ), ], ); final restaurado = InicioPartidaCliente.fromJson(payload.toJson()); expect(restaurado.clientId, 'cliente-sofia'); expect(restaurado.endpointId, 'endpoint-2'); expect(restaurado.jugadores.length, 2); expect(restaurado.jugadores.first.palabra, 'luna'); expect(restaurado.jugadores.last.esImpostor, isTrue); }); }); }