- 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>
40 lines
1.4 KiB
Dart
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);
|
|
});
|
|
}
|