65 lines
2.3 KiB
Dart
65 lines
2.3 KiB
Dart
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);
|
|
});
|
|
}
|