main
1import 'package:blood_pressure_app/features/input/forms/weight_form.dart';
2import 'package:blood_pressure_app/model/storage/storage.dart';
3import 'package:flutter/material.dart';
4import 'package:blood_pressure_app/l10n/app_localizations.dart';
5import 'package:flutter_test/flutter_test.dart';
6
7import '../../../util.dart';
8
9void main() {
10 testWidgets('saves entered values', (WidgetTester tester) async {
11 final key = GlobalKey<WeightFormState>();
12 await tester.pumpWidget(materialApp(WeightForm(key: key)));
13 final localizations = await AppLocalizations.delegate.load(const Locale('en'));
14
15 expect(find.text(localizations.weight), findsOneWidget);
16 expect(find.text(Settings().weightUnit.name), findsOneWidget);
17 expect(key.currentState!.validate(), true);
18
19 await tester.enterText(find.byType(TextField), '314.15');
20
21 expect(key.currentState!.validate(), true);
22 expect(key.currentState!.save(), Settings().weightUnit.store(314.15));
23 });
24
25 testWidgets('shows errors on bad inputs', (WidgetTester tester) async {
26 final key = GlobalKey<WeightFormState>();
27 await tester.pumpWidget(materialApp(WeightForm(key: key)));
28 final localizations = await AppLocalizations.delegate.load(const Locale('en'));
29
30 expect(find.text(localizations.errNaN), findsNothing);
31
32 await tester.enterText(find.byType(TextField), '..,..');
33 expect(key.currentState!.validate(), false);
34 await tester.pumpAndSettle();
35 expect(find.text(localizations.errNaN), findsOneWidget);
36 });
37
38 testWidgets('loads initial values', (WidgetTester tester) async {
39 await tester.pumpWidget(materialApp(WeightForm(
40 initialValue: Settings().weightUnit.store(123.45),
41 )));
42 await tester.pumpAndSettle();
43 expect(find.text('123.45'), findsOneWidget);
44 });
45
46 testWidgets('saves only filled inputs', (WidgetTester tester) async {
47 final key = GlobalKey<WeightFormState>();
48 await tester.pumpWidget(materialApp(WeightForm(key: key)));
49 expect(key.currentState!.save(), isNull);
50 });
51}