import 'package:flutter_test/flutter_test.dart'; import 'package:melo/library/database.dart'; import 'package:melo/library/song_grouping.dart'; Song _song({ required String id, required String title, String? artist, String? album, }) { return Song( id: id, path: '/$id.mp3', title: title, artist: artist, album: album, dateAddedMs: 0, updatedAtMs: 0, deleted: false, playCount: 0, categoriesEdited: false, metadataEdited: false, ); } void main() { group('groupByArtist', () { test('gruppiert mehrere Künstler getrennt', () { final songs = [ _song(id: '1', title: 'A', artist: 'Bob'), _song(id: '2', title: 'B', artist: 'Alice'), _song(id: '3', title: 'C', artist: 'Alice'), ]; final grouped = groupByArtist(songs); expect(grouped.keys, ['Alice', 'Bob']); expect(grouped['Alice']!.length, 2); expect(grouped['Bob']!.length, 1); }); test('gruppiert Songs ohne Künstler unter "Unbekannt"', () { final songs = [ _song(id: '1', title: 'A', artist: null), _song(id: '2', title: 'B', artist: null), ]; final grouped = groupByArtist(songs); expect(grouped.keys, [unbekannterKuenstler]); expect(grouped[unbekannterKuenstler]!.length, 2); }); test('sortiert Künstlernamen alphabetisch', () { final songs = [ _song(id: '1', title: 'A', artist: 'Zebra'), _song(id: '2', title: 'B', artist: 'Anton'), _song(id: '3', title: 'C', artist: 'Mitte'), ]; final grouped = groupByArtist(songs); expect(grouped.keys.toList(), ['Anton', 'Mitte', 'Zebra']); }); test('leere Liste ergibt leere Map', () { expect(groupByArtist(const []), isEmpty); }); }); }