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