kochkomplize/test/navigation_test.dart

142 lines
5.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:kochkomplize/recipedetailpage.dart';
import 'package:kochkomplize/recipeformpage.dart';
import 'package:kochkomplize/recipesoverview.dart';
void main() {
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);
// Prüfen Sie den Speichern-Button
expect(find.byType(FloatingActionButton), findsOneWidget);
});
//todo: Firebase Mocking
// testWidgets('RecipeDetailPage UI Test', (WidgetTester tester) async {
// await tester.pumpWidget(const MaterialApp(
// 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);
// });
}