import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:melo/services/media_store.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); const kanal = MethodChannel('de.baka.melo/media_store'); final messenger = TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger; tearDown(() => messenger.setMockMethodCallHandler(kanal, null)); test('veroeffentliche reicht Pfad, Titel und Künstler nach Android durch', () async { MethodCall? gesehen; messenger.setMockMethodCallHandler(kanal, (call) async { gesehen = call; return '/storage/emulated/0/Music/Melo/Roses.mp3'; }); final pfad = await const MediaStore().veroeffentliche( quellPfad: '/tmp/Roses.mp3', titel: 'Roses', kuenstler: 'Neoni', ); expect(pfad, '/storage/emulated/0/Music/Melo/Roses.mp3'); expect(gesehen!.method, 'publishAudio'); expect(gesehen!.arguments, { 'sourcePath': '/tmp/Roses.mp3', 'title': 'Roses', 'artist': 'Neoni', }); }); test('Scheitert die Android-Seite, gibt es null statt einer Ausnahme', () async { messenger.setMockMethodCallHandler( kanal, (_) async => throw PlatformException(code: 'io')); final pfad = await const MediaStore() .veroeffentliche(quellPfad: '/tmp/x.mp3', titel: 'X'); expect(pfad, isNull); }); }