- Meine Musik als Startbildschirm ohne Topbar: Kopfzeile (Einstellungen, Suche, Musikerkennung), Schnellzugriffe, Shuffle + Sortieren, Liederliste - Sortierung nach Zuletzt hinzugefuegt / Name (A-Z-#) / Wie oft abgespielt, auf- und absteigend, pro Liste gespeichert (SortStore) - Favoriten als eigener Tab mit gleicher Shuffle-/Sortier-Leiste - Download-Tab uebernimmt den Navidrome-Server-Browser - DB-Schema 3: playCount, gezaehlt beim Titelstart - Theme auf #0B0B10 / #c0392b - Scan-Aktionen aus der entfallenen Topbar jetzt in den Einstellungen Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011snPXPafPC5i87o68H14W7
52 lines
1.5 KiB
Dart
52 lines
1.5 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:melo/library/song_sort.dart';
|
|
import 'package:melo/shared/sort_store.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
void main() {
|
|
setUp(() => SharedPreferences.setMockInitialValues({}));
|
|
|
|
test('ohne gespeicherte Wahl gilt "Zuletzt hinzugefügt", neueste zuerst',
|
|
() async {
|
|
final setting = await SortStore.load('meine_musik');
|
|
|
|
expect(setting.mode, SortMode.dateAdded);
|
|
expect(setting.ascending, isFalse);
|
|
});
|
|
|
|
test('gespeicherte Wahl wird zurückgelesen', () async {
|
|
await SortStore.save(
|
|
'meine_musik',
|
|
const SortSetting(SortMode.name, ascending: true),
|
|
);
|
|
|
|
final setting = await SortStore.load('meine_musik');
|
|
|
|
expect(setting.mode, SortMode.name);
|
|
expect(setting.ascending, isTrue);
|
|
});
|
|
|
|
test('Listen speichern getrennt voneinander', () async {
|
|
await SortStore.save(
|
|
'meine_musik',
|
|
const SortSetting(SortMode.playCount, ascending: false),
|
|
);
|
|
await SortStore.save(
|
|
'favoriten',
|
|
const SortSetting(SortMode.name, ascending: true),
|
|
);
|
|
|
|
expect((await SortStore.load('meine_musik')).mode, SortMode.playCount);
|
|
expect((await SortStore.load('favoriten')).mode, SortMode.name);
|
|
});
|
|
|
|
test('unbrauchbarer gespeicherter Wert fällt auf den Standard zurück',
|
|
() async {
|
|
SharedPreferences.setMockInitialValues({'sort_meine_musik_mode': 99});
|
|
|
|
final setting = await SortStore.load('meine_musik');
|
|
|
|
expect(setting.mode, SortMode.dateAdded);
|
|
});
|
|
}
|