Dateien nach "test" hochladen
Tests überarbeiten und auskommentieren dort wo Firebase Mocking gebraucht wird (nicht hinbekommen wie das funktioniert)master
parent
b89ff0770e
commit
684d7fc15c
|
@ -1,25 +1,142 @@
|
||||||
// import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
// import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
// import 'package:kochkomplize/main.dart';
|
import 'package:kochkomplize/recipedetailpage.dart';
|
||||||
// import 'package:kochkomplize/menu.dart';
|
import 'package:kochkomplize/recipeformpage.dart';
|
||||||
//
|
import 'package:kochkomplize/recipesoverview.dart';
|
||||||
// Widget buildMenu() {
|
|
||||||
// return MaterialApp(
|
void main() {
|
||||||
// home: Scaffold(
|
|
||||||
// body: Menu(onMenuItemSelected: (menuItem) {}),
|
testWidgets('Recipeformpage has form fields', (WidgetTester tester) async {
|
||||||
// ),
|
await tester.pumpWidget(MaterialApp(home: Recipeformpage()));
|
||||||
// );
|
|
||||||
// }
|
// Prüfen Sie, ob die Formularfelder vorhanden sind
|
||||||
//
|
expect(find.byType(TextFormField), findsWidgets);
|
||||||
// void main() {
|
// Prüfen Sie den Speichern-Button
|
||||||
// testWidgets('Check menu text', (WidgetTester tester) async {
|
expect(find.byType(FloatingActionButton), findsOneWidget);
|
||||||
// await tester.pumpWidget(buildMenu());
|
});
|
||||||
// expect(find.text('Meine Rezepte'), findsOneWidget);
|
|
||||||
// });
|
//todo: Firebase Mocking
|
||||||
//
|
|
||||||
// testWidgets('Check number of list items', (WidgetTester tester) async {
|
// testWidgets('RecipeDetailPage UI Test', (WidgetTester tester) async {
|
||||||
// await tester.pumpWidget(const MyApp());
|
// await tester.pumpWidget(const MaterialApp(
|
||||||
// expect(find.byType(GestureDetector), findsNWidgets(2));
|
// home: RecipeDetailPage(
|
||||||
// });
|
// recipeId: 'testId',
|
||||||
//
|
// recipe: {'titel': 'Testrezept', 'beschreibung1': 'Beschreibung',},
|
||||||
// }
|
// ),
|
||||||
|
// ));
|
||||||
|
//
|
||||||
|
// // Überprüfen Sie, ob die Texte vorhanden sind
|
||||||
|
// expect(find.text('Testrezept'), findsOneWidget);
|
||||||
|
// expect(find.text('Beschreibung'), findsOneWidget);
|
||||||
|
// // Weitere UI-Elemente überprüfen
|
||||||
|
// });
|
||||||
|
|
||||||
|
// testWidgets('RecipeDetailPage displays static data', (WidgetTester tester) async {
|
||||||
|
// // Erstellen Sie Mock-Daten für das Rezept
|
||||||
|
// final Map mockRecipeData = {
|
||||||
|
// 'titel': 'Testrezept',
|
||||||
|
// 'beschreibung1': 'Beschreibung1',
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// await tester.pumpWidget(MaterialApp(
|
||||||
|
// home: RecipeDetailPage(recipeId: '123', recipe: mockRecipeData),
|
||||||
|
// ));
|
||||||
|
//
|
||||||
|
// // Überprüfen Sie, ob alle UI-Elemente vorhanden sind
|
||||||
|
// expect(find.text('Testrezept'), findsOneWidget);
|
||||||
|
// expect(find.text('Beschreibung1'), findsOneWidget);
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// testWidgets('Recipeformpage form fields and submit', (WidgetTester tester) async {
|
||||||
|
// await tester.pumpWidget(const MaterialApp(home: Recipeformpage()));
|
||||||
|
//
|
||||||
|
// // Eingabe im Titelfeld simulieren
|
||||||
|
// await tester.enterText(find.byType(TextFormField).at(0), 'Testrezept');
|
||||||
|
//
|
||||||
|
// // 'Speichern'-Button drücken
|
||||||
|
// await tester.tap(find.byType(FloatingActionButton));
|
||||||
|
// await tester.pump();
|
||||||
|
// });
|
||||||
|
|
||||||
|
// Test für das Rendering der Rezeptdetails
|
||||||
|
// testWidgets('RecipeDetailPage renders recipe details', (WidgetTester tester) async {
|
||||||
|
// // Erstellen Sie Mock-Daten für das Rezept
|
||||||
|
// final Map recipeData = {
|
||||||
|
// 'titel': 'Testrezept',
|
||||||
|
// 'beschreibung1': 'Beschreibung1',
|
||||||
|
// 'beschreibung2': 'Beschreibung2',
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// await tester.pumpWidget(MaterialApp(
|
||||||
|
// home: RecipeDetailPage(recipeId: '123', recipe: recipeData),
|
||||||
|
// ));
|
||||||
|
//
|
||||||
|
// // Überprüfen, ob alle UI-Elemente vorhanden sind
|
||||||
|
// expect(find.text('Testrezept'), findsOneWidget);
|
||||||
|
// expect(find.text('Beschreibung1'), findsOneWidget);
|
||||||
|
// expect(find.text('Beschreibung2'), findsOneWidget);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// Test für die Löschfunktion
|
||||||
|
// testWidgets('RecipeDetailPage delete recipe', (WidgetTester tester) async {
|
||||||
|
// await tester.pumpWidget(const MaterialApp(
|
||||||
|
// home: RecipeDetailPage(recipeId: '123', recipe: {/* Mock-Daten */}),
|
||||||
|
// ));
|
||||||
|
//
|
||||||
|
// // Löschen-Button antippen und Dialog-Interaktion simulieren
|
||||||
|
// await tester.tap(find.byIcon(Icons.delete));
|
||||||
|
// await tester.pump(); // Lädt den AlertDialog
|
||||||
|
// await tester.tap(find.text('Löschen'));
|
||||||
|
// await tester.pump(); // Simuliert das Drücken des Löschen-Buttons
|
||||||
|
// });
|
||||||
|
|
||||||
|
// testWidgets('RecipesOverview list and navigation', (WidgetTester tester) async {
|
||||||
|
// // Mocking der Firebase-Daten erforderlich
|
||||||
|
//
|
||||||
|
// await tester.pumpWidget(MaterialApp(home: RecipesOverview()));
|
||||||
|
//
|
||||||
|
// // Überprüfen, ob die Rezeptliste geladen wird
|
||||||
|
// expect(find.byType(ListView), findsOneWidget);
|
||||||
|
//
|
||||||
|
// // Simulieren des Antippens eines Rezepts
|
||||||
|
// tester.tap(find.byType(GestureDetector).first);
|
||||||
|
// await tester.pumpAndSettle();
|
||||||
|
//
|
||||||
|
// // Überprüfen, ob die Navigation zum Detailbildschirm funktioniert
|
||||||
|
// expect(find.byType(RecipeDetailPage), findsOneWidget);
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
//Todo: Mocking für die Datenbank
|
||||||
|
// Initialisieren Sie Firebase vor dem Ausführen der Tests
|
||||||
|
// setUpAll(() async {
|
||||||
|
// await Firebase.initializeApp(
|
||||||
|
// options: DefaultFirebaseOptions.currentPlatform,
|
||||||
|
// );
|
||||||
|
// });
|
||||||
|
// testWidgets('Navigating from MyHomePage to Recipeformpage', (WidgetTester tester) async {
|
||||||
|
// // Starten Sie die App
|
||||||
|
// await tester.pumpWidget(const MyApp());
|
||||||
|
//
|
||||||
|
// // Öffnen Sie das Menü, um die Navigation zu `RecipesOverview` zu simulieren
|
||||||
|
// await tester.tap(find.byIcon(Icons.menu));
|
||||||
|
// await tester.pumpAndSettle(); // Warten, bis die Animation abgeschlossen ist
|
||||||
|
//
|
||||||
|
// // Tippen Sie auf das Menüelement 'Meine Rezepte'
|
||||||
|
// await tester.tap(find.text('Meine Rezepte'));
|
||||||
|
// await tester.pumpAndSettle(); // Warten, bis die neue Seite geladen ist
|
||||||
|
//
|
||||||
|
// // Überprüfen Sie, ob `RecipesOverview` angezeigt wird
|
||||||
|
// expect(find.byType(RecipesOverview), findsOneWidget);
|
||||||
|
//
|
||||||
|
// // Tippen Sie auf den FloatingActionButton, um `Recipeformpage` zu öffnen
|
||||||
|
// await tester.tap(find.byIcon(Icons.add));
|
||||||
|
// await tester.pumpAndSettle(); // Warten, bis die neue Seite geladen ist
|
||||||
|
//
|
||||||
|
// // Überprüfen Sie, ob die `Recipeformpage` angezeigt wird
|
||||||
|
// expect(find.byType(Recipeformpage), findsOneWidget);
|
||||||
|
// });
|
||||||
|
}
|
|
@ -1,22 +1,14 @@
|
||||||
// import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter/material.dart';
|
||||||
// import 'package:firebase_core/firebase_core.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
// import 'package:kochkomplize/main.dart';
|
import 'package:kochkomplize/main.dart';
|
||||||
// import 'package:kochkomplize/recipesoverview.dart';
|
|
||||||
// import 'package:kochkomplize/startpage.dart';
|
void main() {
|
||||||
//
|
testWidgets('MyHomePage renders correctly', (WidgetTester tester) async {
|
||||||
// void main() {
|
await tester.pumpWidget(const MaterialApp(home: MyHomePage(title: 'Kochkomplize')));
|
||||||
// test('_MyHomePageState should update selected menu content', () {
|
|
||||||
// final state = _MyHomePageState();
|
// Überprüfen Sie, ob der Titel korrekt angezeigt wird
|
||||||
//
|
expect(find.text('Kochkomplize'), findsOneWidget);
|
||||||
// state._onMenuItemSelected('Meine Rezepte');
|
|
||||||
// expect(state._selectedMenuContent, isInstanceOf<RecipesOverview>());
|
|
||||||
//
|
});
|
||||||
// state._onMenuItemSelected('Startseite');
|
}
|
||||||
// expect(state._selectedMenuContent, isInstanceOf<Startpage>());
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// test('Firebase initializes correctly', () async {
|
|
||||||
// await main(); // Ihr main-Methodenaufruf
|
|
||||||
// expect(Firebase.apps.length, isNonZero);
|
|
||||||
// });
|
|
||||||
// }
|
|
|
@ -1,21 +1,89 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:kochkomplize/main.dart';
|
import 'package:kochkomplize/menu.dart';
|
||||||
import 'package:kochkomplize/recipesoverview.dart';
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Menu navigation test', (WidgetTester tester) async {
|
|
||||||
await tester.pumpWidget(const MyApp());
|
|
||||||
|
|
||||||
// Öffne das Menü
|
testWidgets('Menu renders correctly', (WidgetTester tester) async {
|
||||||
await tester.tap(find.byIcon(Icons.menu));
|
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();
|
await tester.pumpAndSettle();
|
||||||
|
expect(selectedMenuItem, 'Startseite');
|
||||||
|
|
||||||
// Wähle einen Menüpunkt
|
// Wiederholen Sie den Vorgang für 'Meine Rezepte'
|
||||||
|
scaffoldKey.currentState!.openDrawer();
|
||||||
|
await tester.pumpAndSettle();
|
||||||
await tester.tap(find.text('Meine Rezepte'));
|
await tester.tap(find.text('Meine Rezepte'));
|
||||||
await tester.pumpAndSettle();
|
await tester.pumpAndSettle();
|
||||||
|
expect(selectedMenuItem, 'Meine Rezepte');
|
||||||
|
|
||||||
// Überprüfe, ob das richtige Widget angezeigt wird
|
// Hier können Sie weitere Tests für andere Menüpunkte hinzufügen
|
||||||
expect(find.byType(RecipesOverview), findsOneWidget);
|
});
|
||||||
|
|
||||||
|
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);
|
||||||
});
|
});
|
||||||
}
|
}
|
Loading…
Reference in New Issue