Neue Melo-UI Phase 1: 4 Tabs (Meine Musik/Suche/Favoriten/Download) + Sortierung
- 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
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
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);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user