import 'package:audio_service/audio_service.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:melo/player/queue_screen.dart'; MediaItem _item(String id) => MediaItem(id: id, title: 'Titel $id'); void main() { group('removeFromQueue', () { test('entfernt den Titel am angegebenen Index und verschiebt den Rest', () { final queue = [_item('a'), _item('b'), _item('c')]; final result = removeFromQueue(queue, 1); expect(result.map((e) => e.id), ['a', 'c']); }); test('lässt die Original-Liste unverändert', () { final queue = [_item('a'), _item('b')]; removeFromQueue(queue, 0); expect(queue.map((e) => e.id), ['a', 'b']); }); }); group('reorderQueue', () { test('verschiebt einen Titel nach hinten', () { final queue = [_item('a'), _item('b'), _item('c')]; final result = reorderQueue(queue, 0, 2); expect(result.map((e) => e.id), ['b', 'c', 'a']); }); test('verschiebt einen Titel nach vorne', () { final queue = [_item('a'), _item('b'), _item('c')]; final result = reorderQueue(queue, 2, 0); expect(result.map((e) => e.id), ['c', 'a', 'b']); }); }); group('newPlayingIndex', () { test('findet den abgespielten Titel an seiner neuen Position', () { final newQueue = [_item('b'), _item('c'), _item('a')]; final index = newPlayingIndex(newQueue, 'a', 0); expect(index, 2); }); test('fällt auf fallbackIndex zurück, wenn der Titel entfernt wurde', () { // 'b' wurde entfernt (war der abgespielte Titel); an Index 1 steht jetzt 'c'. final newQueue = [_item('a'), _item('c')]; final index = newPlayingIndex(newQueue, 'b', 1); expect(index, 1); }); test('begrenzt fallbackIndex auf die neue Listenlänge', () { // Letzter Titel der Liste wurde entfernt, fallbackIndex zeigt hinter das Ende. final newQueue = [_item('a')]; final index = newPlayingIndex(newQueue, 'b', 1); expect(index, 0); }); test('gibt 0 zurück, wenn die neue Queue leer ist', () { final index = newPlayingIndex(const [], 'a', 0); expect(index, 0); }); test('nutzt fallbackIndex, wenn playingId null ist', () { final newQueue = [_item('a'), _item('b')]; final index = newPlayingIndex(newQueue, null, 1); expect(index, 1); }); }); }