import 'package:audio_service/audio_service.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:melo/library/database.dart'; import 'package:melo/library/song_media.dart'; import 'package:melo/player/audio_handler.dart'; Song _song(String id) => Song( id: id, path: '/music/$id.mp3', title: 'Titel $id', dateAddedMs: 0, updatedAtMs: 0, deleted: false, playCount: 0, categoriesEdited: false, metadataEdited: false, ); /// Ohne diese Regel zeigten die Listen nicht, wo man gerade ist: man scrollte /// durch die Bibliothek und musste raten, welcher Titel läuft. void main() { group('istAmLaufen', () { test('erkennt den laufenden Titel an seiner UUID', () { final laufend = songToMediaItem(_song('uuid-1')); expect(istAmLaufen(laufend, 'uuid-1'), isTrue); }); test('ein anderer Titel läuft nicht', () { final laufend = songToMediaItem(_song('uuid-1')); expect(istAmLaufen(laufend, 'uuid-2'), isFalse); }); test('ohne Wiedergabe läuft nichts', () { expect(istAmLaufen(null, 'uuid-1'), isFalse); }); test('ein Server-Titel markiert keine Zeile der Bibliothek', () { // Er trägt nur eine navidromeId, keine UUID — ohne die Prüfung auf den // leeren String würde er jede Zeile ohne UUID markieren. const serverTitel = MediaItem( id: 'https://musik.example/rest/stream.view?id=abc', title: 'Serverlied', extras: {'navidromeId': 'abc'}, ); expect(istAmLaufen(serverTitel, ''), isFalse); expect(istAmLaufen(serverTitel, 'uuid-1'), isFalse); }); test('eine Zeile ohne UUID wird nie markiert', () { final laufend = songToMediaItem(_song('uuid-1')); expect(istAmLaufen(laufend, ''), isFalse); }); }); }