feat(recording): add safety limits and adaptive headers
Build & Deploy Pluriwave / Análisis de código (push) Successful in 23s
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 1m37s

This commit is contained in:
2026-05-22 15:24:14 +02:00
parent 2320dbdc5f
commit 8190c4ab8d
34 changed files with 1445 additions and 459 deletions
@@ -6,6 +6,7 @@ import 'package:http/http.dart' as http;
import 'package:http/testing.dart';
import 'package:pluriwave/modelos/emisora.dart';
import 'package:pluriwave/servicios/servicio_grabacion_radio.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
group('ServicioGrabacionRadio', () {
@@ -76,6 +77,35 @@ void main() {
await controller.close();
await servicio.dispose();
});
test('se detiene automáticamente al alcanzar el tamaño máximo', () async {
SharedPreferences.setMockInitialValues({});
final dir = await Directory.systemTemp.createTemp('pluriwave-rec-max-');
final controller = StreamController<List<int>>();
final servicio = ServicioGrabacionRadio(
cliente: _StreamClient(controller.stream),
resolverDirectorioBase: () async => dir,
);
await servicio.inicializar();
await servicio.guardarMaxBytes(3);
await servicio.iniciar(
const Emisora(
uuid: 'r3',
nombre: 'Radio Corta',
url: 'https://stream.example/short',
codec: 'mp3',
),
);
controller.add([1, 2, 3]);
await Future<void>.delayed(Duration.zero);
await Future<void>.delayed(const Duration(milliseconds: 20));
expect(servicio.estado.tipo, EstadoGrabacionRadioTipo.inactiva);
await controller.close();
await servicio.dispose();
});
});
}