2024-01-10 10:25:53 +01:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
import 'package:kochkomplize/menu.dart';
|
|
|
|
|
|
|
|
void main() {
|
|
|
|
|
|
|
|
testWidgets('Menu renders correctly', (WidgetTester tester) async {
|
|
|
|
void onMenuItemSelectedMock(String item) {}
|
|
|
|
|
|
|
|
// Verwenden Sie einen GlobalKey, um auf den Scaffold zuzugreifen
|
|
|
|
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
|
|
|
|
|
|
|
|
await tester.pumpWidget(MaterialApp(home: Scaffold(key: scaffoldKey, drawer: Menu(onMenuItemSelected: onMenuItemSelectedMock))));
|
|
|
|
|
|
|
|
// Öffnen Sie den Drawer programmatisch
|
|
|
|
scaffoldKey.currentState!.openDrawer();
|
|
|
|
await tester.pumpAndSettle(); // Warten, bis die Animation abgeschlossen ist
|
|
|
|
|
|
|
|
// Überprüfen Sie nun, ob die Elemente im Drawer vorhanden sind
|
|
|
|
expect(find.byType(Drawer), findsOneWidget);
|
|
|
|
expect(find.text('Hauptmenü'), findsOneWidget);
|
|
|
|
expect(find.text('Startseite'), findsOneWidget);
|
|
|
|
expect(find.text('Meine Rezepte'), findsOneWidget);
|
|
|
|
});
|
|
|
|
|
|
|
|
testWidgets('Tapping each menu item calls onMenuItemSelected with correct item', (WidgetTester tester) async {
|
|
|
|
String selectedMenuItem = '';
|
|
|
|
|
|
|
|
void onMenuItemSelectedMock(String item) {
|
|
|
|
selectedMenuItem = item;
|
|
|
|
}
|
|
|
|
|
|
|
|
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
|
|
|
|
|
|
|
|
await tester.pumpWidget(MaterialApp(home: Scaffold(key: scaffoldKey, drawer: Menu(onMenuItemSelected: onMenuItemSelectedMock))));
|
|
|
|
|
|
|
|
scaffoldKey.currentState!.openDrawer();
|
|
|
|
await tester.pumpAndSettle(); // Warten, bis die Animation abgeschlossen ist
|
|
|
|
|
|
|
|
// Tippen Sie auf das Menüelement 'Startseite' und überprüfen Sie die Funktionalität
|
|
|
|
await tester.tap(find.text('Startseite'));
|
|
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(selectedMenuItem, 'Startseite');
|
|
|
|
|
|
|
|
// Wiederholen Sie den Vorgang für 'Meine Rezepte'
|
|
|
|
scaffoldKey.currentState!.openDrawer();
|
|
|
|
await tester.pumpAndSettle();
|
|
|
|
await tester.tap(find.text('Meine Rezepte'));
|
|
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(selectedMenuItem, 'Meine Rezepte');
|
|
|
|
|
|
|
|
// Hier können Sie weitere Tests für andere Menüpunkte hinzufügen
|
|
|
|
});
|
|
|
|
|
|
|
|
testWidgets('Drawer closes after an item is selected', (WidgetTester tester) async {
|
|
|
|
void onMenuItemSelectedMock(String item) {}
|
|
|
|
|
|
|
|
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
|
|
|
|
|
|
|
|
await tester.pumpWidget(MaterialApp(home: Scaffold(key: scaffoldKey, drawer: Menu(onMenuItemSelected: onMenuItemSelectedMock))));
|
|
|
|
|
|
|
|
scaffoldKey.currentState!.openDrawer();
|
|
|
|
await tester.pumpAndSettle();
|
|
|
|
|
|
|
|
await tester.tap(find.text('Startseite'));
|
|
|
|
await tester.pumpAndSettle();
|
|
|
|
|
|
|
|
// Überprüfen Sie, ob der Drawer geschlossen ist
|
|
|
|
expect(scaffoldKey.currentState!.isDrawerOpen, isFalse);
|
|
|
|
});
|
|
|
|
|
|
|
|
testWidgets('Drawer header renders correctly', (WidgetTester tester) async {
|
|
|
|
// Erstellen Sie eine Mock-Funktion, die einen String als Parameter erwartet
|
|
|
|
void onMenuItemSelectedMock(String item) {}
|
|
|
|
|
|
|
|
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
|
|
|
|
|
|
|
|
await tester.pumpWidget(MaterialApp(
|
|
|
|
home: Scaffold(key: scaffoldKey, drawer: Menu(onMenuItemSelected: onMenuItemSelectedMock))
|
|
|
|
));
|
|
|
|
|
|
|
|
scaffoldKey.currentState!.openDrawer();
|
|
|
|
await tester.pumpAndSettle();
|
|
|
|
|
|
|
|
// Überprüfen Sie, ob der DrawerHeader vorhanden ist
|
|
|
|
expect(find.byType(DrawerHeader), findsOneWidget);
|
|
|
|
expect(find.text('Hauptmenü'), findsOneWidget);
|
|
|
|
});
|
2024-01-10 07:20:15 +01:00
|
|
|
}
|