feat(radio): add nearby discovery and paged search
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 1m34s
Build & Deploy Pluriwave / Análisis de código (push) Successful in 11s

This commit is contained in:
2026-05-20 23:22:15 +02:00
parent f888153aa9
commit 7fcd0f544e
13 changed files with 428 additions and 40 deletions
+31 -2
View File
@@ -197,7 +197,7 @@ void main() {
expect(notificaciones, greaterThan(antes));
});
test('reproducir la misma emisora mientras suena no reinicia el stream', () async {
test('reproducir la misma emisora mientras suena fuerza recarga del stream', () async {
final audio = FakeServicioAudio();
final emisora = emisoraDemo(uuid: 'same-1', nombre: 'Misma');
final estado = EstadoRadio(
@@ -213,7 +213,7 @@ void main() {
await estado.reproducir(emisora);
await estado.reproducir(emisora);
expect(audio.emisorasReproducidas, hasLength(1));
expect(audio.emisorasReproducidas, hasLength(2));
});
test('reordenar favoritos reindexa de forma determinística', () async {
@@ -229,6 +229,35 @@ void main() {
expect(lista.map((e) => e.orden).toList(), equals([0, 1, 2]));
});
test('cargarMasBusqueda pagina resultados y acota memoria', () async {
final emisoras = List.generate(
70,
(i) => emisoraDemo(uuid: 'page-$i', nombre: 'Page $i'),
);
final estado = EstadoRadio(
audio: FakeServicioAudio(),
favoritos: FakeServicioFavoritos(),
radio: FakeServicioRadio(busqueda: emisoras),
servicioEcualizador: FakeServicioEcualizador(),
resolverArchivoCustom: _archivoCustomVacio,
iniciarAutomaticamente: false,
);
await estado.inicializar();
await estado.buscar(nombre: 'page');
expect(estado.resultadosBusqueda, hasLength(30));
expect(estado.hayMasBusqueda, isTrue);
await estado.cargarMasBusqueda();
expect(estado.resultadosBusqueda, hasLength(60));
await estado.cargarMasBusqueda();
expect(estado.resultadosBusqueda, hasLength(70));
expect(estado.hayMasBusqueda, isFalse);
});
test('toggleFavorito refresca lista global y evita estado stale', () async {
final favoritos = FakeServicioFavoritos();
final emisora = emisoraDemo(uuid: 'fav-sync', nombre: 'Sync');