import 'package:cpd/database/db_interface.dart'; import 'package:cpd/database/todo_interface.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:cpd/database/habit.dart'; import 'package:cpd/pages/homepage.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'habitcounter_test.mocks.dart'; import 'home_page_test.mocks.dart'; // Import der generierten Mocks @GenerateMocks([HabitDbInterface, ToDoInterface]) void main() { group('MyHomePage', () { test('habitcounter returns correct count', () { List habits = [ Habit(id: 1, title: 'Habit 1', subtitle: 'Description 1', icon: Icons.star, isComplete: false), Habit(id: 2, title: 'Habit 2', subtitle: 'Description 2', icon: Icons.star_border, isComplete: true), Habit(id: 3, title: 'Habit 3', subtitle: 'Description 3', icon: Icons.favorite, isComplete: true), ]; final myHomePageState = MyHomePageState(); final habitCount = myHomePageState.countHabits(habits); expect(habitCount, 3); }); testWidgets('displays correct habit count text', (WidgetTester tester) async { final mockHabitDbInterface = MockHabitDbInterface(); final mockToDoInterface = MockToDoInterface(); List habits = [ Habit(id: 1, title: 'Habit 1', subtitle: 'Description 1', icon: Icons.star, isComplete: false), Habit(id: 2, title: 'Habit 2', subtitle: 'Description 2', icon: Icons.star_border, isComplete: true), Habit(id: 3, title: 'Habit 3', subtitle: 'Description 3', icon: Icons.favorite, isComplete: true), ]; // Hier mocken wir die fetchAll Methode des mockToDoInterface when(mockToDoInterface.fetchAll()).thenAnswer((_) async => habits); // Stellen Sie sicher, dass der MyHomePage Konstruktor die mockToDoInterface Instanz erhält await tester.pumpWidget(MaterialApp( home: MyHomePage(database: mockHabitDbInterface, title: 'homepage'), )); // Act await tester.pumpAndSettle(); // Warten bis die Widget-Tree sich beruhigt // Assert expect(find.text('You have 3 habits for today'), findsOneWidget); verify(mockToDoInterface.fetchAll()).called(1); verifyNoMoreInteractions(mockToDoInterface); }); }); }