main
 1import 'package:blood_pressure_app/features/input/forms/note_form.dart';
 2import 'package:blood_pressure_app/features/settings/tiles/color_picker_list_tile.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';
 8import '../../settings/tiles/color_picker_list_tile_test.dart';
 9
10void main() {
11  testWidgets('saves entered text', (WidgetTester tester) async {
12    final key = GlobalKey<NoteFormState>();
13    await tester.pumpWidget(materialApp(NoteForm(key: key)));
14    final localizations = await AppLocalizations.delegate.load(const Locale('en'));
15
16    expect(find.text(localizations.addNote), findsOneWidget);
17    expect(key.currentState!.validate(), true);
18
19    await tester.enterText(find.byType(TextField), 'some test note!');
20
21    expect(key.currentState!.validate(), true);
22    expect(key.currentState!.save(), ('some test note!', null));
23  });
24
25  testWidgets('saves entered color and text', (WidgetTester tester) async {
26    final key = GlobalKey<NoteFormState>();
27    await tester.pumpWidget(materialApp(NoteForm(key: key)));
28    final localizations = await AppLocalizations.delegate.load(const Locale('en'));
29
30    expect(find.text(localizations.addNote), findsOneWidget);
31    expect(key.currentState!.validate(), true);
32
33    await tester.enterText(find.byType(TextField), 'some test note!');
34    await tester.tap(find.byType(ColorSelectionListTile));
35    await tester.pump();
36    await tester.tap(find.byElementPredicate(findColored(Colors.red)));
37
38    expect(key.currentState!.validate(), true);
39    expect(key.currentState!.save(), ('some test note!', Colors.red));
40  });
41
42  testWidgets('loads initial values', (WidgetTester tester) async {
43    await tester.pumpWidget(materialApp(NoteForm(
44      initialValue: ('Some note text from test', Colors.cyan),
45    )));
46    await tester.pumpAndSettle();
47    expect(find.text('Some note text from test'), findsOneWidget);
48    await tester.tap(find.byElementPredicate(findColored(Colors.cyan)));
49  });
50
51  testWidgets('saves only filled inputs', (WidgetTester tester) async {
52    final key = GlobalKey<NoteFormState>();
53    await tester.pumpWidget(materialApp(NoteForm(key: key)));
54    expect(key.currentState!.save(), isNull);
55  });
56
57  testWidgets('saves prefilled inputs', (WidgetTester tester) async {
58    final v = ('Some note text from test', Colors.cyan);
59
60    final key = GlobalKey<NoteFormState>();
61    await tester.pumpWidget(materialApp(NoteForm(key: key, initialValue: v)));
62    expect(key.currentState!.save(), v);
63  });
64}