Skip to content

Commit c0427fb

Browse files
test: add autovalidate mode test cases on form builder field
1 parent 97be5e6 commit c0427fb

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

test/src/form_builder_field_test.dart

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:flutter/material.dart';
2+
import 'package:flutter/services.dart';
23
import 'package:flutter_form_builder/flutter_form_builder.dart';
34
import 'package:flutter_test/flutter_test.dart';
45

@@ -181,6 +182,21 @@ void main() {
181182

182183
expect(find.text(errorTextField), findsOneWidget);
183184
});
185+
testWidgets(
186+
'Should not show error when init form and AutovalidateMode is disabled',
187+
(tester) async {
188+
const textFieldName = 'text4';
189+
const errorTextField = 'error text field';
190+
final testWidget = FormBuilderTextField(
191+
name: textFieldName,
192+
autovalidateMode: AutovalidateMode.disabled,
193+
validator: (value) => errorTextField,
194+
);
195+
await tester.pumpWidget(buildTestableFieldWidget(testWidget));
196+
await tester.pumpAndSettle();
197+
198+
expect(find.text(errorTextField), findsNothing);
199+
});
184200
testWidgets(
185201
'Should show error when AutovalidateMode is onUserInteraction and change field',
186202
(tester) async {
@@ -199,6 +215,47 @@ void main() {
199215

200216
expect(find.text(errorTextField), findsOneWidget);
201217
});
218+
testWidgets(
219+
'Should show error when init form and AutovalidateMode is onUnfocus',
220+
(tester) async {
221+
const textFieldName = 'text4';
222+
const errorTextField = 'error text field';
223+
final testWidget = FormBuilderTextField(
224+
name: textFieldName,
225+
autovalidateMode: AutovalidateMode.onUnfocus,
226+
validator: (value) => errorTextField,
227+
);
228+
final widgetFinder = find.byWidget(testWidget);
229+
230+
// Init form
231+
await tester.pumpWidget(buildTestableFieldWidget(
232+
Column(
233+
children: [
234+
testWidget,
235+
ElevatedButton(onPressed: () {}, child: const Text('Submit')),
236+
],
237+
),
238+
autovalidateMode: AutovalidateMode.onUnfocus,
239+
));
240+
await tester.pumpAndSettle();
241+
final focusNode =
242+
formKey.currentState?.fields[textFieldName]?.effectiveFocusNode;
243+
expect(find.text(errorTextField), findsNothing);
244+
expect(Focus.of(tester.element(widgetFinder)).hasFocus, false);
245+
expect(focusNode?.hasFocus, false);
246+
247+
// Focus input and write text
248+
await tester.enterText(widgetFinder, 'test');
249+
await tester.pumpAndSettle();
250+
expect(Focus.of(tester.element(widgetFinder)).hasFocus, true);
251+
expect(focusNode?.hasFocus, true);
252+
expect(find.text(errorTextField), findsNothing);
253+
254+
// Unfocus input and show error
255+
await tester.sendKeyEvent(LogicalKeyboardKey.tab);
256+
await tester.pumpAndSettle();
257+
expect(find.text(errorTextField), findsOneWidget);
258+
});
202259
});
203260
group('isDirty - ', () {
204261
testWidgets('Should not dirty by default', (tester) async {

0 commit comments

Comments
 (0)