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}