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}