This repository has been archived on 2026-08-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
melo-app/test/widget_test.dart
T

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