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); }); }