v2.54.1 — Queue zeigt echte Wiedergabe-Reihenfolge (inkl. Shuffle), aktuelles Lied markiert

This commit is contained in:
Dustin
2026-08-05 12:20:32 +02:00
parent 8b6f0925a6
commit 5f7b652eb6
5 changed files with 333 additions and 33 deletions
+52
View File
@@ -1,12 +1,64 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
import 'package:melo_app/models/song.dart';
import 'package:melo_app/screens/login_screen.dart';
import 'package:melo_app/services/player_service.dart';
import 'package:melo_app/widgets/warteschlange_sheet.dart';
Song _song(int id, String titel) => Song(
id: id,
titel: titel,
kuenstler: 'Künstler $id',
dauerSekunden: 100,
dateiPfad: '',
);
void main() {
setUp(() {
// PlayerService ist ein Singleton — Zustand vor jedem Test zurücksetzen
final p = PlayerService();
p.setZufallsmodus(false);
p.setWiederholmodus(Wiederholmodus.aus);
p.cancelSleepTimer();
p.setWarteschlange([]);
});
testWidgets('LoginScreen zeigt Anmelde-Felder', (WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(home: LoginScreen()));
await tester.pumpAndSettle();
// Prüft dass was gerendert wird (kein Crash)
expect(find.byType(TextField), findsWidgets);
});
testWidgets('WarteschlangeSheet zeigt echte Wiedergabe-Reihenfolge',
(WidgetTester tester) async {
final p = PlayerService();
p.setWarteschlange(
[_song(1, 'Aktuell'), _song(2, 'Naechster'), _song(3, 'Danach')],
startIndex: 1);
await tester.pumpWidget(
const MaterialApp(home: Scaffold(body: WarteschlangeSheet())));
await tester.pump();
// Aktueller Song oben, deutlich markiert (▶ + „Jetzt spielt"-Chip)
expect(find.text('Jetzt spielt'), findsOneWidget);
expect(find.byIcon(Icons.play_arrow), findsOneWidget);
// Echte Reihenfolge: aktueller Song zuerst, dann die nächsten Lieder
expect(find.text('Naechster'), findsOneWidget);
expect(find.text('Danach'), findsOneWidget);
// Kopfzeile zählt die Wiedergabe-Reihenfolge (nicht die Bibliothek)
expect(find.text('2 Titel'), findsOneWidget);
});
testWidgets('WarteschlangeSheet zeigt Wiederholung-Hinweis bei Repeat',
(WidgetTester tester) async {
final p = PlayerService();
p.setWarteschlange([_song(1, 'A'), _song(2, 'B'), _song(3, 'C')]);
p.setWiederholmodus(Wiederholmodus.playlist);
await tester.pumpWidget(
const MaterialApp(home: Scaffold(body: WarteschlangeSheet())));
await tester.pump();
expect(find.textContaining('Wiederholung aktiv'), findsOneWidget);
});
}