71 lines
2.3 KiB
Dart
71 lines
2.3 KiB
Dart
import 'package:farolero/modelos/jugador.dart';
|
|
import 'package:farolero/modelos/partida.dart';
|
|
import 'package:farolero/modelos/snapshot_partida_online.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
void main() {
|
|
test('serializa resultado online preservando acentos y caracteres especiales',
|
|
() {
|
|
final partida = Partida(
|
|
config: const ConfigPartida(categoria: 'animales'),
|
|
jugadores: [
|
|
Jugador(id: 'j1', nombre: 'León', esImpostor: true, eliminado: true),
|
|
Jugador(id: 'j2', nombre: 'María'),
|
|
Jugador(id: 'j3', nombre: 'Óscar'),
|
|
],
|
|
palabraSecreta: 'Camión',
|
|
categoriaReal: 'Animales fantásticos',
|
|
fase: FaseJuego.resultado,
|
|
historialVotaciones: const [
|
|
ResultadoVotacion(
|
|
eliminadoId: 'j1',
|
|
eliminadoNombre: 'León',
|
|
eraImpostor: true,
|
|
votos: {'j2': 'j1', 'j3': 'j1'},
|
|
),
|
|
],
|
|
);
|
|
|
|
final snapshot = SnapshotPartidaOnline.desdePartida(
|
|
partida,
|
|
roomId: 'sala-áéíóú',
|
|
revelarPalabra: true,
|
|
revelarImpostores: true,
|
|
);
|
|
|
|
final reparsed = SnapshotPartidaOnline.fromJson(snapshot.toJson());
|
|
|
|
expect(reparsed.roomId, 'sala-áéíóú');
|
|
expect(reparsed.categoria, 'Animales fantásticos');
|
|
expect(reparsed.palabraSecreta, 'Camión');
|
|
expect(reparsed.jugadores.map((jugador) => jugador.nombre), [
|
|
'León',
|
|
'María',
|
|
'Óscar',
|
|
]);
|
|
expect(reparsed.resultadoActual?.eliminadoNombre, 'León');
|
|
expect(reparsed.historialVotaciones.single.votos, {'j2': 'j1', 'j3': 'j1'});
|
|
expect(reparsed.impostores, ['León']);
|
|
});
|
|
|
|
test('no revela palabra ni impostores salvo que el host lo indique', () {
|
|
final partida = Partida(
|
|
config: const ConfigPartida(categoria: 'lugares'),
|
|
jugadores: [
|
|
Jugador(id: 'j1', nombre: 'Ana', esImpostor: true),
|
|
Jugador(id: 'j2', nombre: 'Beto'),
|
|
Jugador(id: 'j3', nombre: 'Carla'),
|
|
],
|
|
palabraSecreta: 'Biblioteca',
|
|
categoriaReal: 'Lugares',
|
|
fase: FaseJuego.debate,
|
|
);
|
|
|
|
final datos = SnapshotPartidaOnline.desdePartida(partida).toJson();
|
|
|
|
expect(datos.containsKey('palabraSecreta'), isFalse);
|
|
expect(datos.containsKey('impostores'), isFalse);
|
|
expect(datos['jugadoresTodos'], hasLength(3));
|
|
});
|
|
}
|