leafittome/test/widget_test.dart
cschlaefke 6e22d9c3aa Projekt-Gerüst: Flutter-App mit Heute-Checkliste, Pflanzenverwaltung, Stellplätzen und Einstellungen
- Flutter/Dart (iOS + Android), Riverpod, go_router, i18n via ARB (deutsch)
- Feature-Struktur: today, plants, locations, household (V2-Platzhalter), settings
- Intervall-Modell: Aufgaben werden aus lastWatered/lastFertilized + Intervall berechnet
- In-Memory-Demo-Daten, Firebase-Anbindung folgt im nächsten Block
- Doku: Architektur, Firebase-Einrichtung, Forgejo-Git-Hosting

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 21:13:18 +02:00

40 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:planty/app.dart';
import 'package:planty/core/settings/settings_provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
Future<Widget> buildTestApp() async {
SharedPreferences.setMockInitialValues({});
final prefs = await SharedPreferences.getInstance();
return ProviderScope(
overrides: [sharedPreferencesProvider.overrideWithValue(prefs)],
child: const PlantyApp(),
);
}
void main() {
testWidgets('App startet mit der Heute-Checkliste', (tester) async {
await tester.pumpWidget(await buildTestApp());
await tester.pumpAndSettle();
// Demo-Daten enthalten überfällige Aufgaben → Checkliste sichtbar.
expect(find.text('Heute'), findsOneWidget);
expect(find.textContaining('offene Aufgabe'), findsOneWidget);
});
testWidgets('Aufgabe bestätigen entfernt sie aus der Liste', (tester) async {
await tester.pumpWidget(await buildTestApp());
await tester.pumpAndSettle();
final doneButtons = find.text('Erledigt');
final countBefore = tester.widgetList(doneButtons).length;
expect(countBefore, greaterThan(0));
await tester.tap(doneButtons.first);
await tester.pumpAndSettle();
expect(tester.widgetList(find.text('Erledigt')).length, countBefore - 1);
});
}